对于转换方式判断的一点疑惑(代码并不长)
查看原帖
对于转换方式判断的一点疑惑(代码并不长)
537899
sajdfklsdfadfdakgjd楼主2021/8/5 17:44

朋友的代码,已AC,但是我感觉在判断第5种情况时会不会有点问题。假设这三种情况为1、2、3。矩阵第一个数据符合1情况,随后数据符合2情况,这样也符合代码里case 5的判定条件,但这并不符合实际5的情况呀。有没有大佬能解惑的

#include<stdio.h>
int main(){
    int n ,is[8]={};
    scanf("%d",&n);
    char f1[10][10],f2[10][10];
    for(int i=0;i<n;i++){
        scanf("%s",f1[i]);
    }
    for(int i=0;i<n;i++){
        scanf("%s",f2[i]);
    }
    for(int k=1;k<8;k++){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                switch (k){
                    case 1:is[k]=(f1[i][j]==f2[j][n-1-i])?k:0;break;
                    case 2:is[k]=(f1[i][j]==f2[n-1-i][n-1-j])?k:0;break;
                    case 3:is[k]=(f1[i][j]==f2[n-1-j][i])?k:0;break;
                    case 4:is[k]=(f1[i][j]==f2[i][n-1-j])?k:0;break;
                    case 5:is[k]=(f1[i][j]==f2[n-1-j][n-1-i]||f1[i][j]==f2[n-1-i][j]||f1[i][j]==f2[j][i])?k:0;break;
                    case 6:is[k]=(f1[i][j]==f2[i][j])?k:0;break;
                    default:is[k]=k;break;
                }
                if(is[k]==0)
                    break;
            }
            if(is[k]==0)
                break;
        }
    }
    for(int m=1;m<8;m++){
        if(is[m]!=0){
            printf("%d",is[m]);
            break;
        }
    }
}
2021/8/5 17:44
加载中...