标签:
题意:给出n*m的棋盘,在‘.’处放上B或者W,最后要求所有的B和W都不相邻
先把棋盘的点转化成‘B’,再搜,如果它的四周存在‘B’,则将它变成‘W‘
一直挂在第五个数据的原因是,没有dfs(nx,ny)
搜索果断弱爆了= =(差不多写了一个小时)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<set> 9 #include<queue> 10 #include<algorithm> 11 using namespace std; 12 13 typedef long long LL; 14 const int INF = (1<<30)-1; 15 const int mod=1000000007; 16 const int maxn=100005; 17 char g[105][105]; 18 int n,m; 19 int dir[4][2]={-1,0,1,0,0,1,0,-1}; 20 21 void dfs(int x,int y){ 22 if(x<1||x>n||y<1||y>m||g[x][y]==‘-‘) return; 23 if(g[x][y]==‘B‘){ 24 for(int i=0;i<4;i++){ 25 int nx=x+dir[i][0]; 26 int ny=y+dir[i][1]; 27 if(g[nx][ny]==‘B‘) { 28 g[nx][ny]=‘W‘; 29 dfs(nx,ny); 30 } 31 } 32 } 33 if(g[x][y]==‘W‘){ 34 for(int i=0;i<4;i++){ 35 int nx=x+dir[i][0]; 36 int ny=y+dir[i][1]; 37 if(g[nx][ny]==‘W‘) { 38 g[nx][ny]=‘B‘; 39 dfs(nx,ny); 40 } 41 } 42 } 43 } 44 45 46 47 int main(){ 48 scanf("%d %d",&n,&m); 49 for(int i=1;i<=n;i++) 50 for(int j=1;j<=m;j++) 51 cin>>g[i][j]; 52 53 for(int i=1;i<=n;i++){ 54 for(int j=1;j<=m;j++) 55 if(g[i][j]==‘.‘) g[i][j]=‘B‘; 56 } 57 58 for(int i=1;i<=n;i++) 59 for(int j=1;j<=m;j++) dfs(i,j); 60 61 for(int i=1;i<=n;i++){ 62 for(int j=1;j<=m;j++) 63 printf("%c",g[i][j]); 64 printf("\n"); 65 } 66 return 0; 67 }
后来翻别人的代码来看,发现不用搜索= =判断i+j为奇数,放上‘B‘,否则放上‘W‘
真是too young---------
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<set> 9 #include<queue> 10 #include<algorithm> 11 using namespace std; 12 13 typedef long long LL; 14 const int INF = (1<<30)-1; 15 const int mod=1000000007; 16 const int maxn=100005; 17 18 int main(){ 19 int n,m; 20 char ch; 21 scanf("%d %d",&n,&m); 22 for(int i=0;i<n;i++){ 23 for(int j=0;j<m;j++){ 24 cin>>ch; 25 if(ch==‘.‘){ 26 if((i+j)%2) cout<<‘B‘; 27 else cout<<‘W‘; 28 } 29 else cout<<‘-‘; 30 } 31 printf("\n"); 32 } 33 return 0; 34 }
加油啊,加油---go--go--go--
Codeforces 445 A DZY Loves Chessboard【DFS】
标签:
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4433082.html