求助,第二和最后一个点WA(不是前面有人问过的那种,在本地测试第二个点就是7)
查看原帖
求助,第二和最后一个点WA(不是前面有人问过的那种,在本地测试第二个点就是7)
735387
songtj楼主2022/7/9 15:34

谢谢你的关注

第二和最后一个点WA

第二个测试点数据: 输入

5
-@@@-
-@@--
-@---
-----
-----
-----
----@
---@@
--@@@
-----

输出

5

我的问题和之前有人问过的不一样,在本地IDE测试就是7


代码:

#include<bits/stdc++.h>
using namespace std;
int n;
char sq1[15][15], sq2[15][15], sq3[15][15], sq4[15][15];

bool first() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            sq2[j][n-i+1] = sq1[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (sq2[i][j] != sq3[i][j]) return 0;
        }
    }
    return 1;
}

bool second() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            sq2[n-i+1][n-j+1] = sq1[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (sq2[i][j] != sq3[i][j]) return 0;
        }
    }
    return 1;
}

bool third() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            sq2[n-j+1][i] = sq1[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (sq2[i][j] != sq3[i][j]) return 0;
        }
    }
    return 1;
}

bool fourth() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            sq2[i][n-j+1] = sq1[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (sq2[i][j] != sq3[i][j]) return 0;
        }
    }
    return 1;
}

bool fifth() {
    fourth();
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            sq1[i][j] = sq4[i][j];
        }
    }
    if (first()) return 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            sq1[i][j] = sq4[i][j];
        }
    }
    if (second()) return 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            sq1[i][j] = sq4[i][j];
        }
    }
    if (third()) return 1;
    return 0;
}

bool sixth() {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (sq2[i][j] != sq3[i][j]) return 0;
        }
    }
    return 1;
}

void work() {
    if(first()) {
        cout<<1;
        return ;
    }
    if(second()) {
        cout<<2;
        return ;
    }
    if(third()) {
    	cout<<3;
    	return ;
	}
	if(fourth()) {
		cout<<4;
		return ;
	}
	if(fifth()) {
		cout<<5;
		return ;
	}
	if(sixth()) {
		cout<<6;
		return ;
	}
	cout<<7;
}

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> sq1[i][j];
            sq4[i][j] = sq1[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> sq3[i][j];
        }
    }
    work();
    return 0;
}

十分感谢你能够抽出时间帮助我

2022/7/9 15:34
加载中...