粉刷迷宫
来源:互联网 发布:网络借贷不还会怎么样 编辑:程序博客网 时间:2024/04/29 00:48
话说最近PhoenixWright最近太闲了,于是就自己建了个迷宫自娱自乐。但是这迷宫实在是太难看了,都吸引不了MM来玩= =。于是他想给这迷宫的墙刷上好看的颜色,但是由于Money有限,他又不想把所有的墙都刷上颜色,于是他请你来帮忙,把迷宫里所有能看到的墙都给刷上颜色,不能看到的墙就不要刷。
比如我们给出一个4X5的迷宫,用’#’表示墙,用’.’表示可走的空间
/*这题的解题思路想的很好,突然有种山重水复疑无路,柳暗花明又一村的感觉,因为是把外围的及看的见的墙粉刷,所以只要判断外面的框格,若是'.'就遍历,并遇到旁边有'#'把全局变量加1,若是'#'就加1,但是在提交过程中还是遇到很多状况,像遍历,下标很容易越界,所以每次在遍历前先判断是否越界,要不然就是错误答案,若墙在角落里面就加2,但是不用想得这么复杂,下标直接从[0~m-1][0或n-1],[0或m-1][1~n-1]*/
#include<stdio.h>
#include<string.h>
char a[50][51];
int m,n,max;
void DFS(int i,int j)
{
a[i][j]='a';
if(i>=1&&a[i-1][j]=='.') DFS(i-1,j);
else if(i>=1&&a[i-1][j]=='#') max++;
if(i<=m-2&&a[i+1][j]=='.') DFS(i+1,j);
else if(i<=m-2&&a[i+1][j]=='#') max++;
if(j>=1&&a[i][j-1]=='.') DFS(i,j-1);
else if(j>=1&&a[i][j-1]=='#') max++;
if(j<=n-2&&a[i][j+1]=='.') DFS(i,j+1);
else if(j<=n-2&&a[i][j+1]=='#') max++;
}
int main()
{
register int i;
while(scanf("%d%d",&m,&n)!=EOF)
{
max=0;
for(i=0;i<m;i++)
scanf("%s",a[i]);
for(i=0;i<n;i++)
{
if(a[0][i]=='.') DFS(0,i);
else if(a[0][i]=='#') max++;
if(a[m-1][i]=='.') DFS(m-1,i);
else if(a[m-1][i]=='#') max++;
}
for(i=0;i<m;i++)
{
if(a[i][0]=='.') DFS(i,0);
else if(a[i][0]=='#') max++;
if(a[i][n-1]=='.') DFS(i,n-1);
else if(a[i][n-1]=='#') max++;
}
printf("%d/n",max);
}
return 0;
}
- 粉刷迷宫
- 粉刷迷宫
- FJNU OJ 2072粉刷迷宫。
- 粉刷匠
- 粉刷(paint)
- 粉刷栅栏算法问题
- [BZOJ1296][SCOI2009]粉刷匠
- 1296: [SCOI2009]粉刷匠
- bzoj1296【SCOI2009】粉刷匠
- 粉刷匠&集体照
- 【NOIP2013模拟】粉刷匠
- bzoj 1296 【粉刷匠】
- BZOJ1296: [SCOI2009]粉刷匠
- BZOJ1296: [SCOI2009]粉刷匠
- bzoj1296 [SCOI2009]粉刷匠
- bzoj1296: [SCOI2009]粉刷匠
- BZOJ1296: [SCOI2009]粉刷匠
- 【bzoj1296】[SCOI2009]粉刷匠
- sql server 2000里ldf损坏,只有mdf的恢复
- 我
- 网页中页眉页脚的设置参数
- MTS组件——从理论到实践(一)
- 实战SAP:【总结】
- 粉刷迷宫
- poi操作excel文件
- 最小路径覆盖
- 获得G1的电池电量信息
- SQL Server 不存在或访问被拒绝
- Linux学习资料
- 随机二叉搜索树 Treap
- CSS中背景background-position负值定位深入理解
- August 7th Friday