AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
int l[105][105];
void dfs(int x,int y) {
if (x < 1 || y < 1 || x > n || y > m || l[x][y] == 0) return;
l[x][y] = 0;
dfs(x-1,y);
dfs(x,y-1);
dfs(x+1,y);
dfs(x,y+1);
dfs(x-1,y-1);
dfs(x-1,y+1);
dfs(x+1,y-1);
dfs(x+1,y+1);
}
int main() {
scanf("%d%d",&n,&m);
for (int i = 1; i <= n ; i++) {
for (int j = 1; j <= m ; j++) {
char c;
cin >> c;
if (c == 'W') l[i][j] = 1;
}
}
for (int i = 1; i <= n ; i++) {
for (int j = 1; j <= m ; j++) {
if (l[i][j] == 1) {
ans++;
dfs(i,j);
}
}
}
printf("%d",ans);
return 0;
}
WA代码:
#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
int l[105][105];
void dfs(int x,int y) {
if (x < 1 || y < 1 || x > n || y > m || l[x][y] == 0) return;
l[x][y] = 0;
dfs(x-1,y);
dfs(x,y-1);
dfs(x+1,y);
dfs(x,y+1);
dfs(x-1,y-1);
dfs(x-1,y+1);
dfs(x+1,y-1);
dfs(x+1,y+1);
}
int main() {
scanf("%d%d",&n,&m);
for (int i = 1; i <= n ; i++) {
for (int j = 1; j <= m ; j++) {
char c;
scanf("%c",&c);
if (c == 'W') l[i][j] = 1;
}
}
for (int i = 1; i <= n ; i++) {
for (int j = 1; j <= m ; j++) {
if (l[i][j] == 1) {
ans++;
dfs(i,j);
}
}
}
printf("%d",ans);
return 0;
}
两次代码的不同只是在于把
scanf("%c",&c);
换成了
cin >> c;
这两个输入不应当在结果上相同的吗,为什么会导致WA呢