列表

详情


NC223206. 四面楚歌

描述

在游戏中,因为一次错误的决断,你的士兵被敌方实行围剿。为了挽回人员损失,你不得不开启金手指暂停敌方士兵的移动,从而尽量让自己的士兵能成功突围。

已知地图是一块的区域,每块格子有以下几种类型:

.:表示此处为一块空地。

1:表示此处有敌方士兵,不许通过。因为开启了金手指,所以敌方士兵不会移动。

0:表示此处有我方士兵。

现规定我方士兵只能进行上/下/左/右四个方向的移动,只要某个士兵移动出了地图边界,那么就算该士兵突围成功。请问能有多少士兵成功突围。


输入描述

第一行两个正整数,,

接下来行,每行个字符,表示地图情况。

输出描述

输出成功突围的士兵个数。

示例1

输入:

4 5
111..
101..
111..
..0..

输出:

1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 93ms, 内存消耗: 68112K, 提交时间: 2021-08-03 21:10:01

#include<bits/stdc++.h>
using namespace std;
char ch[1003][1003];
int vis[1003][1003];
int sum=0;
int n,m;
void dfs(int x,int y)
{ 
	if(x<0||x>n+1||y<0||y>m+1||vis[x][y]||ch[x][y]=='1')
	return;
	vis[x][y]=1;
	if(ch[x][y]=='0')
	sum++;
	dfs(x+1,y);
	dfs(x,y+1);
	dfs(x-1,y);
	dfs(x,y-1);
	return;
}
int main()
{ 
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>ch[i]+1;
	}
	dfs(0,0);
	cout<<sum;
	return 0;
}

上一题