Проблема состоит в том, чтобы найти симметричность в матрице символов (char logo[N][N]
), где logo
содержит некоторые символы (только 0 или 1 ).
Обратите внимание, что при выводе кода, как только я получу все 4 элемента логотипа как 0, т.е. if(0==0==0==0)
, тогда также будет выполнен код 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");
Я ожидаю, что результат будет " ДА ", так как каждый раз, когда проверяется элемент 4 логотипа, обнаруживается, что он совпадает (1111
или 0000
), но здесь выможно увидеть результат NO после i
получить 4 нуля.
1-я строка - это номер тестового примера, вторая строка - N, затем N * N-матрица
Вы можете видеть, когда все элементы логотипа равны 1111, затем он возвращается в цикл, но после 0000 он прерывается и печатает НЕТ.