码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 445 A DZY Loves Chessboard【DFS】

时间:2015-04-16 21:15:48      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

题意:给出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 }
View Code

 

 后来翻别人的代码来看,发现不用搜索= =判断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 }
View Code

 

 

 

 

加油啊,加油---go--go--go--

Codeforces 445 A DZY Loves Chessboard【DFS】

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/4433082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!