Codeforces Round #297 (Div. 2) D
来源:互联网 发布:毒药 知乎 编辑:程序博客网 时间:2024/06/05 11:40
Arthur and Walls
题目说的是有一个n*m的矩阵,元素是'.'或'*',要求把尽可能少的'*'变成'.',使得所有'.'的区域都是矩形。
想了好些方法,最后看了题解。。其实这题的关键是想到如果某个2*2的矩阵内有3个'.',那么剩下的那个'*'也应该变成'.'。想到这个以后,搜一下就可以了。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <stack>#include <vector>#include <deque>#include <set>#include <queue>using namespace std;const int maxn=2010;char mp[maxn][maxn];int dirn[]={-1,-1,-1,0,0,1,1,1};int dirm[]={-1,0,1,-1,1,-1,0,1};int n,m;bool judge(int i,int j){if(mp[i][j-1]=='.'&&mp[i-1][j-1]=='.'&&mp[i-1][j]=='.'){return true;}if(mp[i-1][j]=='.'&&mp[i-1][j+1]=='.'&&mp[i][j+1]=='.'){return true;}if(mp[i][j+1]=='.'&&mp[i+1][j+1]=='.'&&mp[i+1][j]=='.'){return true;}if(mp[i+1][j]=='.'&&mp[i+1][j-1]=='.'&&mp[i][j-1]=='.'){return true;}return false;}void dfs(int nn,int mm){for(int i=0;i<8;i++){if(mp[nn+dirn[i]][mm+dirm[i]]=='*'){if(judge(nn+dirn[i],mm+dirm[i])){mp[nn+dirn[i]][mm+dirm[i]]='.';dfs(nn+dirn[i],mm+dirm[i]);}}}}int main(){cin>>n>>m;for(int i=1;i<=n;i++){scanf("%s",mp[i]+1);}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(mp[i][j]=='*'){if(judge(i,j)){mp[i][j]='.';dfs(i,j);}}}}for(int i=1;i<=n;i++){printf("%s\n",mp[i]+1);}return 0;}
0 0
- Codeforces Round #297 (Div. 2) D
- Codeforces Round #297 (Div. 2) D. Arthur and Walls
- Codeforces Round #297 (Div. 2) D - Arthur and Walls
- Codeforces Round #297 (Div. 2) C,D,E
- Codeforces Round #297 (Div. 2) D Arthur and Walls
- Codeforces Round #297 (Div. 2) C、D、E
- Codeforces Round #103 (Div. 2) D
- Codeforces Round #104 (Div. 2) D
- Codeforces Round #105 (Div. 2) D
- Codeforces Round #139 (Div. 2) D. Snake
- Codeforces Round #155 (Div. 2) D-rats
- Codeforces Round #159 (Div. 2) D sum
- Codeforces Round #184 (Div. 2) D、E
- Codeforces Round#186(Div 2) D
- codeforces Round # 187(Div.2) D
- Codeforces Round #191 (Div. 2) D
- Codeforces Round #194 (Div. 2) D. Chips
- Codeforces Round #209 (Div. 2) <A-D>
- 你所不知道的html5与html中的那些事(三)
- linux kernel and driver-编译安装内核
- java核心技术笔记 接口与内部类
- 黑马程序员—C语言—基本语法printf与scanf
- Android完全退出应用程序
- Codeforces Round #297 (Div. 2) D
- OQL
- 强调句型
- 【总结】Effective java经验之谈,通用方法
- JSqlParser系列之二代码结构(转载)
- 开篇--印象仙剑
- C/C++ 统计函数调用时间
- CSS样式表的规则
- C++调用C函数与Extern "C"