hdu 1241 Oil Deposits

  水题,求连通分量的个数,深搜一遍即可,之所以这么水还写下来,是因为样例一组有误的数据弄得我调试了一个多小时,白白浪费了很多精力和时间。最后一组数据的两个5后面多了一个空格:

我用 getchar 来接收字符,所以因为它这个无故多出来的空格使得后面的字符全乱了,调试输出时才有了千奇百怪的结果,不得不吐槽下杭电你也太坑了,虽说也不是第一次,之前你把行和列的输入顺序故意弄反,现在又在这里留下个这么恶心的坑,有必要卡这些非算法和编程的东西么?

 1 #include<cstdio>
 2 #include<cstring>
 3 
 4 char s[102][102];
 5 int dir[2][8]= {{-1,-1,-1,0,0,1,1,1},{-1,0,1,-1,1,-1,0,1}};
 6 
 7 void dfs(int i, int j){
 8     if(s[i][j]=='*')    return ;
 9     s[i][j]= '*';
10     for(int k=0; k<8; ++k){
11         int di= i+dir[0][k], dj= j+dir[1][k];
12         if(s[di][dj]=='@')    dfs(di,dj);
13     }
14 }
15 
16 int main(){
17     int n,m,i,j;
18     while(~scanf("%d%d",&n,&m),n){
19         getchar();
20         memset(s,'*',sizeof(s));
21         for(i=1; i<=n; ++i,getchar())
22             for(j=1; j<=m; ++j)
23                 s[i][j]= getchar();
24         int ans= 0;
25         for(i=1; i<=n; ++i)
26             for(j=1; j<=m; ++j)
27                 if(s[i][j]=='@'){
28                     dfs(i,j);
29                     ++ans;
30                 }
31         printf("%d
",ans);
32     }
33     return 0;
34 }
原文地址:https://www.cnblogs.com/Newdawn/p/4394399.html