求帮助,实在不行了QAQ

img

#include <stdio.h>
int main()
{
    int n[5][5] = {{0,0,1,1,0},{1,1,0,0,1},{0,1,1,0,1},{0,0,0,1,0},{0,1,0,0,1}};
    int a,b,c,d,e,r=0;
    for(a=0;a<5;a++)
    {
        for(b=0;b<5;b++)
        {
            if(b==a)
                continue;
            for(c=0;c<5;c++)
            {
                if(c==a || c==b)
                    continue;
                for(d=0;d<5;d++)
                {
                    if(d==a || d==b || d==c)
                        continue;
                    for(e=0;e<5;e++)
                    {
                        if(e==a || e==b || e==c || e==d)
                            continue;
                        if(n[0][a] == 1 && n[1][b]==1 && n[2][c]==1 && n[3][d] == 1&& n[4][e]==1)
                        {
                            printf("a=%d,b=%d,c=%d,e=%d,f=%d\n",a,b,c,d,e);
                            r=1;
                        }
                    }
                }
            }
        }
    }
    if(r==0)
        printf("无法分配");
    return 0;   
}
 

对数组进行遍历,水平方向相加为1的先分配,然后设置为0,再对垂直方向相加为1的分配,然后设置为0,依次循环则得到分配结果。