Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
我哭了,一个DFS写的我泪流满面,还是没弄好,帮看看#include<iostream> using namespace std; char map[100][100]; bool use[100][100]; int m,n; void dfs(int i,int j) { if((i==0||j==0||i==(m+1)||j==(n+1))&&map[i][j]=='*') return; use[i][j]=true; if(map[i][j]!='*'&&map[i-1][j-1]=='@'&&(i-1)>=1&&(j-1)>=1&&(i-1)<=m&&(j-1)<=n) dfs(i-1,j-1); if(map[i][j]!='*'&&map[i-1][j]=='@'&&(i-1)>=1&&j>=1&&(i-1)<=m&&j<=n) dfs(i-1,j); if(map[i][j]!='*'&&map[i-1][j+1]=='@'&&(i-1)>=1&&(j+1)>=1&&(i-1)<=m&&(j+1)<=n) dfs(i-1,j+1); if(map[i][j]!='*'&&map[i][j+11]=='@'&&i>=1&&(j+1)>=1&&i<=m&&(j+1)<=n) dfs(i,j+1); if(map[i][j]!='*'&&map[i+1][j+1]=='@'&&(i+1)>=1&&(j+1)>=1&&(i+1)<=m&&(j+1)<=n) dfs(i+1,j+1); if(map[i][j]!='*'&&map[i+1][j]=='@'&&(i+1)>=1&&j>=1&&(i+1)<=m&&j<=n) dfs(i+1,j); if(map[i][j]!='*'&&map[i+1][j-1]=='@'&&(i+1)>=1&&(j-1)>=1&&(i+1)<=m&&(j-1)<=n) dfs(i+1,j-1); if(map[i][j]!='*'&&map[i][j-1]=='@'&&i>=1&&(j-1)>=1&&i<=m&&(j-1)<=n) dfs(i,j-1); } int main() { int i,j,ans; ans=0; while(1) { cin>>m>>n; if(m==0&&n==0) return 0; for(i=0;i<=m+1;i++) { map[i][0]='*'; use[i][0]=true; map[i][n+1]='*'; use[i][n+1]=true; } for(i=0;i<=n+1;i++) { map[0][i]='*'; use[0][i]=true; map[m+1][i]='*'; use[m+1][i]=true; } for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { cin>>map[i][j]; if(map[i][j]=='*') use[i][j]=true; else if(map[i][j]=='@') use[i][j]=false; } } for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { if(map[i][j]=='@'&&use[i][j]==false) { dfs(i,j); ans++; //cout<<ans<<endl; } } } cout<<ans<<endl; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator