poj 1562

这道题主要注意输入的问题,以及对周围搜索时的注意,要使用递归,多次调用,附上一组数据

11 20
*@*@*@@@**@*@**@@@**
***@*@*@*@*@****@**@
*@*@*@*@*@*@********
@*************@@**@*
@*@*@*@*@***********
*@*@*@*@*@*@*@*@****
**********@*@*@*****
******@*@*@*@*@*@***
**@*@***************
***********@*@*@*@**
*@*@*@******@*******

20

 1 #include<stdio.h>
 2 char xx[106][106];
 3 int dps(int i,int j)
 4 {
 5     if(xx[i-1][j-1]=='@')
 6     {
 7         xx[i-1][j-1]='#';
 8         dps(i-1,j-1);
 9     }
10     if(xx[i-1][j]=='@')
11     {
12         xx[i-1][j]='#';
13         dps(i-1,j);
14     }
15     if(xx[i-1][j+1]=='@')
16     {
17         xx[i-1][j+1]='#';
18         dps(i-1,j+1);
19     }
20     if(xx[i][j-1]=='@')
21     {
22         xx[i][j-1]='#';
23         dps(i,j-1);
24     }
25     if(xx[i][j+1]=='@')
26     {
27         xx[i][j+1]='#';
28         dps(i,j+1);
29     }
30     if(xx[i+1][j-1]=='@')
31     {
32         xx[i+1][j-1]='#';
33         dps(i+1,j-1);
34     }
35     if(xx[i+1][j]=='@')
36     {
37         xx[i+1][j]='#';
38         dps(i+1,j);
39     }
40     if(xx[i+1][j+1]=='@')
41     {
42         xx[i+1][j+1]='#';
43         dps(i+1,j+1);
44     }
45 }
46 int main()
47 {
48     int m,n,i,j,ans;
49     while(1)
50     {
51         scanf("%d%d",&m,&n);
52         if(m==0) break;
53         for(i=0;i<=104;i++)
54             for(j=0;j<=104;j++)
55                 xx[i][j]='*';
56         for(i=1;i<=m;i++)
57            scanf("%s",xx[i]);
58             ans=0;
59         for(i=1;i<=m;i++)
60             for(j=0;j<=n;j++)
61             {
62                 if(xx[i][j]=='@')
63                 {
64                     xx[i][j]='#';
65                     ans++;
66                     dps(i,j);
67                 }
68                     /*else if(xx[i-1][j-1]!='#'&&xx[i-1][j]!='#'&&xx[i-1][j+1]!='#'&&xx[i][j-1]!='#'&&xx[i][j+1]!='#'&&xx[i+1][j-1]!='#'&&xx[i+1][j]!='#'&&xx[i+1][j+1]!='#')
69                     {
70                         ans++;
71                         if(xx[i-1][j-1]=='@') xx[i-1][j-1]='#';
72                         if(xx[i-1][j]=='@') xx[i-1][j]='#';
73                         if(xx[i-1][j+1]=='@') xx[i-1][j+1]='#';
74                         if(xx[i][j-1]=='@') xx[i][j-1]='#';
75                         if(xx[i][j+1]=='@') xx[i][j+1]='#';
76                         if(xx[i+1][j-1]=='@') xx[i+1][j-1]='#';
77                         if(xx[i+1][j]=='@') xx[i+1][j]='#';
78                         if(xx[i+1][j+1]=='@') xx[i+1][j+1]='#';
79                     }
80                 }*/
81 
82             }
83             printf("%d
",ans);
84            /* for(i=1;i<=m;i++)
85             {
86                 for(j=0;j<=n;j++)
87                 printf("%c",xx[i][j]);
88                 printf("
");
89             }*/
90     }
91     return 0;
92 }
原文地址:https://www.cnblogs.com/Tree-dream/p/5333907.html