问题是在包含一些字符(只有0或1char logo[N][N] )的字符矩阵( )中找到对称性。logo
请注意,在代码的输出中,一旦我将所有 4 个徽标元素都设为 0 即 if(0==0==0==0),else代码也会被执行。
我已经实现了对称性检查代码,发现唯一的问题是在执行 else 块的给定代码块上发生并且它给出了错误的结果(否)。
代码片段:(N是方阵的大小)
int YES=1;
for(j=N-1;j>((N-1)>>1);j--) /* symmetricity condition particular to the problem*/
{
for(k=0;k<((N-1)>>1);k++)
{
printf("%c %c %c %c\n",logo[j][k],logo[N-1-j][k],logo[j][N-1-k],logo[N-1-j][N-1-k]); // used this line for debugging
if(logo[j][k]==logo[N-1-j][k]==logo[j][N-1-k]==logo[N-1-j][N-1-k])continue; //checking symmetricity
else // here else is executed when all 4 logo elements are 0
{
YES=0;
break;
}
}
}
(YES==1)?printf("YES\n"):printf("NO\n");
我希望输出为“ YES ”,因为每次检查 4 个徽标元素时发现相同(1111或0000)但在这里您可以看到在获得 4 个零后结果为NO 。i
您可以看到所有徽标元素何时为 1111,然后它重新进入循环,但在 0000 之后它会中断并打印 NO。
