博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
The Castle
阅读量:5326 次
发布时间:2019-06-14

本文共 3252 字,大约阅读时间需要 10 分钟。

分析:先暴力求出联通块数和最大联通块包含多少,接着对于每个位置判断去掉其上下左右的四个位置的墙之后的最大联通块数,并且记得先选最西,然后选最南的顺序了来输出

1 /*  2     PROB:castle  3     ID:wanghan  4     LANG:C++  5 */  6 #include "iostream"  7 #include "cstdio"  8 #include "cstring"  9 using namespace std; 10 const int maxn=50+10; 11 int n,m,a[maxn][maxn],vis[maxn][maxn]; 12 int ans,cnt; 13 int dx[]={
0,-1,0,1}; 14 int dy[]={-1,0,1,0}; 15 int r[]={
1,2,4,8}; 16 bool judge(int x,int y){ 17 if(x>n||x<=0||y<=0||y>m) 18 return false; 19 return true; 20 } 21 void dfs(int x,int y){ 22 if(vis[x][y]) 23 return ; 24 vis[x][y]=1; 25 ans++; 26 for(int i=0;i<4;i++){ 27 int sx=x+dx[i],sy=y+dy[i]; 28 if(judge(sx,sy)){ 29 if((a[x][y]&r[i])==0) 30 dfs(sx,sy); 31 } 32 } 33 /* 34 if((a[x][y]&1)==0) dfs(x,y-1); 35 if((a[x][y]&2)==0) dfs(x-1,y); 36 if((a[x][y]&4)==0) dfs(x,y+1); 37 if((a[x][y]&8)==0) dfs(x+1,y);*/ 38 } 39 int main() 40 { 41 freopen("castle.in","r",stdin); 42 freopen("castle.out","w",stdout); 43 cin>>m>>n; 44 for(int i=1;i<=n;i++){ 45 for(int j=1;j<=m;j++) 46 cin>>a[i][j]; 47 } 48 memset(vis,0,sizeof(vis)); 49 cnt=0; 50 int res=0; 51 for(int i=1;i<=n;i++){ 52 for(int j=1;j<=m;j++){ 53 if(!vis[i][j]){ 54 ++cnt; 55 ans=0; 56 dfs(i,j); 57 res=max(res,ans); 58 } 59 } 60 } 61 cout<
<
=1;i--){ 68 if((a[i][j]&1)){ 69 memset(vis,0,sizeof(vis)); 70 ans=0; 71 a[i][j]-=1; 72 dfs(i,j); 73 if(ans>res){ 74 res=ans; 75 x=i,y=j; 76 ch=""; 77 ch="W"; 78 } 79 a[i][j]+=1; 80 } 81 if((a[i][j]&2)){ 82 memset(vis,0,sizeof(vis)); 83 ans=0; 84 a[i][j]-=2; 85 dfs(i,j); 86 if(ans>res){ 87 res=ans; 88 x=i,y=j; 89 ch=""; 90 ch="N"; 91 } 92 a[i][j]+=2; 93 } 94 if((a[i][j]&4)){ 95 memset(vis,0,sizeof(vis)); 96 ans=0; 97 a[i][j]-=4; 98 dfs(i,j); 99 if(ans>res){100 res=ans;101 x=i,y=j;102 ch="";103 ch="E";104 }105 a[i][j]+=4;106 }107 if((a[i][j]&8)){108 memset(vis,0,sizeof(vis));109 ans=0;110 a[i][j]-=8;111 dfs(i,j);112 if(ans>res){113 res=ans;114 x=i,y=j;115 ch="";116 ch="S";117 }118 a[i][j]+=8;119 }120 }121 }122 cout<
<
View Code

 

转载于:https://www.cnblogs.com/wolf940509/p/7116598.html

你可能感兴趣的文章
ubuntu创建用户命令
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>
block为什么要用copy,runtime的简单使用
查看>>
[COGS 2065]学数数
查看>>
nginx 负载均衡
查看>>
zabbix3.0.4 部署之四 (LNAP > PHP安装)
查看>>
day22
查看>>
计量经济与时间序列_平稳性
查看>>
SpringBoot初学(4)– JdbcTemplate和Mybatis
查看>>
java数据结构与算法(二)----栈和队列
查看>>
深入理解JavaScript系列
查看>>
【Python】Linux crontab定时任务配置方法(详解)
查看>>
php文件加载路径
查看>>
树剖||树链剖分||线段树||BZOJ4034||Luogu3178||[HAOI2015]树上操作
查看>>
短信验证码
查看>>
挨踢项目求生法则——编码篇
查看>>
Springboot 2.0.4 整合Mybatis出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required...
查看>>
拖拽复制
查看>>
Hadoop学习:(二)hadoop的简介
查看>>
selenium自动化测试实例
查看>>