我本地输出的就是5啊,测试怎么说我输出的是7?

P1205 [USACO1.2] 方块转换 Transformations

```cpp #include <iostream> #include <string> using namespace std; int n; bool transform1(string *a,string *b)//顺时针90 { for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if (a[n-1-j][i]!=b[i][j]) return false; } } return true; } bool transform2(string *a,string *b) { for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if (a[n-1-i][n-1-j]!=b[i][j]) return false; } } return true; } bool transform3(string *a,string *b) { for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if (a[j][n-1-i]!=b[i][j]) return false; } } return true; } bool transform4(string *a,string *b) { for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if (a[i][n-1-j]!=b[i][j]) return false; } } return true; } bool transform5(string *a,string *b) { string temp[10]; for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { temp[i][j]=a[i][n-1-j]; } } return (transform1(temp,b) || transform2(temp,b) || transform3(temp,b)) ; } bool transform6(string *a,string *b) { for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if (a[i][j]!=b[i][j]) return false; } } return true; } int main() { string a[10]; string b[10]; cin>>n; for (int i=0;i<n;i++) { cin>>a[i]; } for (int i=0;i<n;i++) { cin>>b[i]; } if (transform1(a,b)) cout<<'1'; else if (transform2(a,b)) cout<<'2'; else if (transform3(a,b)) cout<<'3'; else if (transform4(a,b)) cout<<'4'; else if (transform5(a,b)) cout<<'5'; else if (transform6(a,b)) cout<<'6'; else cout<<'7'; return 0; } /* *第二个和最后一个样例wa了 第二个样例Input: 5 -@@@- -@@-- -@--- ----- ----- ----- ----@ ---@@ --@@@ ----- Output: 5 我明明输出的是5呀·······怎么就wa了呢·····?(醉了orz) //妈诶,第一次发帖格式没控制好,见谅_(:з」∠)_ */ ```
by 北凉zero @ 2018-08-13 12:35:43


我也是,输出就是5,但是判我错。楼主现在解决了吗
by Tifo1998 @ 2018-08-30 16:05:48


我也是~
by BEqueN @ 2018-10-06 16:46:21


@[北凉zero](/space/show?uid=118024) @[Tifo1998](/space/show?uid=49378) 这么巧的吗??? ``` /* ID: halo_mi1 TASK: transform LANG: C++ */ #include<cstdio> #include<cstring> #define fre(x) freopen(#x".in", "r", stdin),freopen(#x".out", "w", stdout) using namespace std; int N; char b[11][11], d[11][11], c[11][11], e[11][11]; bool check() { for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) if (b[i][j] != d[i][j]) return 0; return 1; } bool dfs1(int now) { if (now == 5) return 0; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) b[i][j] = e[j][N - i + 1]; if (check()) return 1; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j]; return dfs1(now + 1); } bool dfs2(int now) { if (now == 3) return 0; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) b[i][j] = e[N - i + 1][N - j + 1]; if (check()) return 1; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j]; return dfs2(now + 1); } bool dfs3(int now) { if (now == 5) return 0; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) b[i][j] = e[N - j + 1][i]; if (check()) return 1; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j]; return dfs3(now + 1); } bool dfs4(int now) { if (now == 3) return 0; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) b[i][j] = e[i][N - j + 1]; if (check()) return 1; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j]; return dfs4(now + 1); } bool dfs5() { for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) b[i][j] = e[i][N - j + 1]; for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j]; return dfs1(1) || dfs2(1) || dfs3(1); } int main() { //fre(transform); scanf("%d", &N); getchar(); for (int i = 1; i <= N; i++, getchar()) for (int j = 1; j <= N; j++) c[i][j] = e[i][j] = b[i][j] = getchar(); for (int i = 1; i <= N; i++, getchar()) for (int j = 1; j <= N; j++) d[i][j] = getchar(); if (dfs1(1)) { printf("1\n"); return 0; } for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j] = c[i][j]; if (dfs2(1)) { printf("2\n"); return 0; } for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j] = c[i][j]; if (dfs3(1)) { printf("3\n"); return 0; } for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j] = c[i][j]; if (dfs4(1)) { printf("4\n"); return 0; } for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) e[i][j] = b[i][j] = c[i][j]; if (dfs5()) { printf("5\n"); return 0; } if (check()) { printf("6\n"); return 0; } printf("7\n"); return 0; } ```
by BEqueN @ 2018-10-06 16:46:57


我也是同求
by 夜雨声訉 @ 2019-05-19 17:01:22


我也是啊,因为这个我都被学长喷了
by 落花微雨 @ 2019-10-16 23:39:30


+1
by jijidawang @ 2020-01-28 14:56:06


同求
by 守夜人0808 @ 2020-03-16 22:49:16


哇所以到底怎么解决
by 无可奉告告 @ 2020-11-08 20:10:23


我之前也是这个问题,后来想到是换行符的问题 这里换行符是/r/n,要连续getchar()两次才能滤过换行
by 小丁小丁 @ 2021-01-30 14:37:40


| 下一页