为什么#5自己的输出和测试点输出一毛一样却不对?
我代码:
#include <cstdio>
char s[105][105], yizhong[] = {"yizhong"};
bool a[105][105];
int n, dx[] = {1, 0, -1, 0, 1, -1, 1, -1},
dy[] = {0, 1, 0, -1, 1, -1, -1, 1};
bool dfs(int x, int y, int tot, int dix, int diy) {
if (tot == 7)
return true;
if (0 > x || x >= n || 0 > y || y >= n)
return false;
if (s[x][y] != yizhong[tot])
return false;
if (dfs(x + dix, y + diy, tot + 1, dix, diy))
a[x][y] = true;
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", s[i]);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (s[i][j] == 'y') {
for (int k = 0; k < n; k++)
dfs(i, j, 0, dx[k], dy[k]);
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j])
putchar(s[i][j]);
else
putchar('*');
}
putchar('\n');
}
return 0;
}
为了找不同我写了个比较程序
#include <cstdio>
char s1[105][105], s2[105][105];
int main() {
freopen("out.txt", "r", stdin);
for (int i = 0; i < 100; i++)
scanf("%s", s1[i]);
freopen("P1101_5.out", "r", stdin);
for (int i = 0; i < 100; i++)
scanf("%s", s2[i]);
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (s1[i][j] != s2[i][j])
puts("NO!!!");
}
}
return 0;
}
发现一毛一样(样例#5太大了放不下)