求debug,13分,除第一个测试点外其他全部WA
查看原帖
求debug,13分,除第一个测试点外其他全部WA
1224442
fa0143楼主2023/11/30 00:30
#include <stdio.h>
#define N 15

char tarmap[N][N];
int len;

int Check(char transmap[][N]);
void One(char transmap[][N],char orimap[][N]);
void Two(char transmap[][N],char orimap[][N]);
void Three(char transmap[][N],char orimap[][N]);
void Four(char transmap[][N],char orimap[][N]);

int main(){
    char orimap[N][N] = {'\0'};
    char transmap[N][N] = {'\0'};
    scanf ("%d",&len);
    getchar();
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            scanf ("%c",&orimap[i][j]);
        }
        getchar();
    }
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            scanf ("%c",&tarmap[i][j]);
        }
        getchar();        
    }
    One(transmap,orimap);
    if (Check(transmap) == 1) {
        printf ("1");
        return 0;
    }
    Two(transmap,orimap);
    if (Check(transmap) == 1) {
        printf ("2");
        return 0;
    }
    Three(transmap,orimap);
    if (Check(transmap) == 1) {
        printf ("3");
        return 0;
    }
    Four(transmap,orimap);
    if (Check(transmap) == 1) {
        printf ("4");
        return 0;
    } else {
        char orimap1[N][N];
        //orimap用于复制经过操作4后的transmap
        for (int i = 1; i <= len; i++) {
            for (int j = 1; j <= len; j++) {
                orimap1[i][j] = transmap[i][j];
            }
        }
        One(transmap,orimap1);
        if (Check(transmap) == 1) {
            printf ("5");
            return 0;
        }
        Two(transmap,orimap1);
        if (Check(transmap) == 1) {
            printf ("5");
            return 0;
        }
        Three(transmap,orimap1);
        if (Check(transmap) == 1) {
            printf ("5");
            return 0;
        }
    }
    int check = 1;
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            if (orimap[i][j] != tarmap[i][j]) {
                check = 0;
            }
        }
    }
    if (check == 1) {
        printf ("6");
    } else {
        printf ("7");
    }
    return 0;
}

int Check(char transmap[][N]) {
    int check = 1;
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            if (transmap[i][j] != tarmap[i][j]) {
                check = 0;
                return 0;
            }
        }
    }
    return 1;
}

void One(char transmap[][N],char orimap[][N]){
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            transmap[j][len + 1 - i] = orimap[i][j];
        }
    }
    return;
}
void Two(char transmap[][N],char orimap[][N]){
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            transmap[len + 1 - i][len + 1 - j] = orimap[i][j];
        }
    }
    return;   
}
void Three(char transmap[][N],char orimap[][N]){
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            transmap[len + 1 - j][i] = orimap[i][j];
        }
    }
    return;
}
void Four(char transmap[][N],char orimap[][N]){
    for (int i = 1; i <= len; i++) {
        for (int j = 1; j <= len; j++) {
            transmap[i][len + 1 - j] = orimap[i][j];
        }
    }
    return;
}
2023/11/30 00:30
加载中...