Code Forces 377 A. Maze(dfs)
2015-07-25 15:48
232 查看
Description
给定一个n*m的地图,这个地图初始化有s个空地,并且这s个空地是连通的。现在要求找到一种方案放k个墙到这个地图使得剩下的s-k个点还是连通的
Input
第一行为三个整数n,m和k,之后为一n*m矩阵
Output
对于每组用例,输出一种可能的方案使得放k个墙之后这个迷宫还是连通的
Sample Input
3 4 2
#..#
..#.
#…
Sample Output
#.x#
x.#.
#…
Solution
dfs,找到路径终点就放墙
Code
给定一个n*m的地图,这个地图初始化有s个空地,并且这s个空地是连通的。现在要求找到一种方案放k个墙到这个地图使得剩下的s-k个点还是连通的
Input
第一行为三个整数n,m和k,之后为一n*m矩阵
Output
对于每组用例,输出一种可能的方案使得放k个墙之后这个迷宫还是连通的
Sample Input
3 4 2
#..#
..#.
#…
Sample Output
#.x#
x.#.
#…
Solution
dfs,找到路径终点就放墙
Code
#include<cstdio> #include<cstring> #include<iostream> using namespace std; #define maxn 512 int n,m,k; char map[maxn][maxn]; bool vis[maxn][maxn]; void dfs(int x,int y) { if(x<0||x>=n||y<0||y>=m||map[x][y]!='.'||vis[x][y]) return ; vis[x][y]=true; dfs(x+1,y); dfs(x-1,y); dfs(x,y+1); dfs(x,y-1); if(k) { map[x][y]='X'; k--; } } int main() { scanf("%d%d%d",&n,&m,&k); for(int i=0;i<n;i++) scanf("%s",map[i]); for(int i=0;i<n&&k;i++) for(int j=0;j<m&&k;j++) dfs(i,j); for(int i=0;i<n;i++) puts(map[i]); return 0; }
相关文章推荐
- Struts2自定义Result处理JSON
- XML解析(一) DOM解析
- 一个HashMap和TreeSet综合使用的小例子
- Linux 下stat和access函数
- POJ 2823单调队列 数组写法
- JavaStuNote 6
- 浅析函数调用栈
- hdoj 1241 Oil Deposits (dfs)
- 16.3Sum Closest (Two-Pointers)
- JAVA注解
- android观察者设计模式 下载进度同步显示
- vivo X5 Pro拆机图解
- Android DownloadManager 的使用
- 重学java23种设计模式(2)抽象工厂模式
- iOS- 利用AFNetworking(AFN) - 实现文件上传
- Linux文件搜索命令
- hihocoder 1172 博弈游戏·Nim游戏·二
- 重拍NBA50大
- 进程与线程的一个简单解释
- Linux环境下编程(一)——进程fork()的使用