比较两个四位数整数中位置和数值相同的个数以及位置不同但数值相同个数

问题来自一个c语言的猜数字游戏,两个四位数进行比较,比较结果为* A*B A表示位置正确数字也正确,B表示数字正确但位置不正确,比如2A2B表示有两个数字位置正确且位置也正确,除此之外,还有两个数字正确但是位置不对
求大神解答,感觉自己没有思路无从下手

将两个四位数都转为4个数字数组,然后用一个数组的每个值与另一个数组比较,如果有相等的数字,如果位置与检查的数字一样,则A的计数加1,否则B的计数加1。

#include <stdio.h>
int main()
{
    int A=0,B=0;
    int m,n,i,j;
    int a[4],b[4];
    scanf("%d%d",&m,&n);
    for(i=0;i<4;i++)
    {
        a[i] = m%10;
        m=m/10;
    }
    for(i=0;i<4;i++)
    {
        b[i] = n%10;
        n=n/10;
    }
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            if(a[i] == b[j])
                break;
        }
        if(j<4)
        {
            if(i==j)
                A++;
            else
                B++;
        }
    }
    printf("%dA%dB",A,B);
    return 0;
}