红与黑题解(深搜入门ing)

题目:OpenJudge - 1818:红与黑

代码:深搜入门题,注意w是列数,h是行数即可~

#include
#include
using namespace std;
char cizhuan[30][30];
int w,h;
int x,y;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};//记录方向
int dfs(int x,int y){
    int ans=1;
    cizhuan[x][y]='!';//标记已访问过的
    for(int i=0;i<4;i++){
        int a=x+dx[i],b=y+dy[i];
        if(a&&a<=h&&b&&b<=w&&cizhuan[a][b]=='.')
            ans+=dfs(a,b);
    }
    return ans;
}
int main()
{
	while(cin>>w>>h){
		memset(cizhuan,'#',sizeof(cizhuan));
		if(!w&&!h) break;
		for(int i=1;i<=h;i++)//注意h是行数!
			for(int j=1;j<=w;j++){
				cin>>cizhuan[i][j];
				if(cizhuan[i][j]=='@'){
					x=i;
					y=j;
				}
			}
	cout<

ps:最近摸鱼好严重。。主要是动规卡住了TwT,以后要更努力才行!

有用的话就点赞评论收藏嗷!! 

你可能感兴趣的:(算法学习ing,深度优先,c++)