hdu 1312 Red and Black(DFS)

网友投稿 648 2022-10-22

hdu 1312 Red and Black(DFS)

hdu 1312 Red and Black(DFS)

题目:​​Input

6 9....#......#..............................#@...#.#..#.11 9.#..........#.#######..#.#.....#..#.#.###.#..#.#..@#.#..#.#####.#..#.......#..#########............11 6..#..#..#....#..#..#....#..#..###..#..#..#@...#..#..#....#..#..#..7 7..#.#....#.#..###.###...@...###.###..#.#....#.#..0 0

Sample Output

4559613

输入字符数组时候要么用不出错的cin,要么用这样的格式:

getchar(); for(i=1;i<=h;i++) { for(j=1;j<=w;j++) { scanf("%c",&a[i][j]); } getchar(); }

不要用这样的格式:

for(i=1;i<=h;i++) { getchar(); for(j=1;j<=w;j++) { scanf("%c",&a[i][j]); } }

有时这会出错。

来看看两种风格的DFS:

(1):

#include #includeusing namespace std;char s[25][25];int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int ans=0;int lie,hang;void dfs(int x,int y){ s[x][y]='#'; ans++; for(int i=0;i<4;i++){ int tx=x+dir[i][0],ty=y+dir[i][1]; if(tx=0&&ty=0&&s[tx][ty]=='.'){ dfs(tx,ty); } }}int main(){ //freopen("cin.txt","r",stdin); while(cin>>lie>>hang){ if(lie==0&&hang==0)break; int x,y; ans=0; for(int i=0;i

(2):

#include #includeusing namespace std;char a[25][25];int w,h;int f(int i,int j){ if(i<1||i>h||j<1||j>w) return 0; if(a[i][j]!='#') { a[i][j]='#'; return 1+f(i-1,j)+f(i+1,j)+f(i,j+1)+f(i,j-1); } else return 0;}int main(){ //freopen("cin.txt","r",stdin); int i,j; while(~scanf("%d%d",&w,&h)&&w&&h) { int x,y; getchar(); for(i=1;i<=h;i++) { for(j=1;j<=w;j++) { scanf("%c",&a[i][j]); if(a[i][j]=='@'){ x=i; y=j; } } getchar(); } printf("%d\n",f(x,y)); } return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:hdu 1531 King(差分约束·负环的判断)
下一篇:Intel开源增强学习框架:Coach
相关文章

 发表评论

暂时没有评论,来抢沙发吧~