[Codevs] 1014 棋盘染色

1049 棋盘染色

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
题目描述 Description

有一个5×5的棋盘,上面有一些格子被染成了黑色,其他的格子都是白色,你的任务的对棋盘一些格子进行染色,使得所有的黑色格子能连成一块,并且你染色的格子数目要最少。读入一个初始棋盘的状态,输出最少需要对多少个格子进行染色,才能使得所有的黑色格子都连成一块。(注:连接是指上下左右四个方向,如果两个黑色格子只共有一个点,那么不算连接)

 

输入描述 Input Description

   输入包括一个5×5的01矩阵,中间无空格,1表示格子已经被染成黑色。

 

输出描述 Output Description

输出最少需要对多少个格子进行染色

 

样例输入 Sample Input

11100

11000

10000

01111

11111

 

样例输出 Sample Output

1

 

分析 Analysis

思维级模版题= =。

判重:HASH蛤习

判断输出:DFS求联通块

主体:BFS

注意点:状态表示

主要还是数据范围小= =感谢出题人放我蒟蒻一马Orz

 

代码 Code

  1 #include<cstdio>
  2 #include<iostream>
  3 #include<cstring>
  4 #include<queue>
  5 #define LL long long 
  6 using namespace std;
  7 
  8 const int dir[4][2] = {{0,1},{1,0},{-1,0},{0,-1}};
  9 
 10 bool swi = true;
 11 
 12 struct MAP{
 13     int map[7][7],step,remain;
 14     
 15     MAP(){
 16         memset(map,0,sizeof(map));
 17         step = remain = 0;
 18     }
 19 };
 20 
 21 queue<MAP> q;
 22 
 23 bool HASH[21473650];
 24 
 25 LL GETHASH(MAP now){
 26     LL code = 0;
 27     for(int i = 1;i <= 5;i++){
 28         for(int j = 1;j <= 5;j++){
 29             code = (code<<1)+now.map[i][j];
 30         }
 31     }
 32     
 33     return code%21473648;
 34 }
 35 
 36 bool poicheck(int x,int y){
 37     if(x > 5 || x < 1 || y > 5 || y < 1) return false;
 38     else return true;
 39 }
 40 
 41 int tot = 0;
 42 bool chess[6][6];
 43 void dfs(int x,int y,MAP now){
 44     if(chess[x][y] || !now.map[x][y] || !poicheck(x,y)) return;
 45     chess[x][y] = true;
 46     tot++;
 47     for(int i = 0;i < 4;i++){
 48         int nowx = x+dir[i][0];
 49         int nowy = y+dir[i][1];
 50         dfs(nowx,nowy,now);
 51     }
 52 }
 53 
 54 bool check(MAP now){
 55     int x,y;
 56     for(int i = 1;i <= 5;i++){
 57         for(int j = 1;j <= 5;j++){
 58             if(now.map[i][j]){
 59                 x = i,y = j;
 60                 break;
 61             }
 62         }
 63     }
 64     
 65     memset(chess,false,sizeof(chess));
 66     tot = 0;
 67     dfs(x,y,now);
 68     
 69     if(tot == 25-now.remain) return true;
 70     else return false;
 71 }
 72 
 73 void Input(){
 74     MAP tmp;
 75     
 76     for(int i = 1;i <= 5;i++){
 77         for(int j = 1;j <= 5;j++){
 78             scanf("%1d",&tmp.map[i][j]);
 79             if(!tmp.map[i][j]) tmp.remain++;
 80         } 
 81     }
 82     
 83     tmp.step = 0;
 84     
 85     
 86     
 87     q.push(tmp);
 88 }
 89 
 90 void PUSH(MAP now){
 91     now.step++;now.remain--;
 92     for(int i = 1;i <= 5;i++){
 93         for(int j = 1;j <= 5;j++){
 94             if(!now.map[i][j]){
 95                 now.map[i][j] = 1;
 96                 
 97                 LL code = GETHASH(now);
 98                 
 99                 if(HASH[code]){
100                     now.map[i][j] = 0;
101                     continue;
102                 }else HASH[code] = 1;
103                 
104                 if(check(now)){
105                     printf("%d",now.step);
106                     swi = false;
107                     return;
108                 }
109                 q.push(now);
110                 now.map[i][j] = 0;
111             }
112         }
113     }
114 }
115 
116 void bfs(){
117     while(!q.empty() && swi){
118         MAP tmp = q.front();
119         q.pop();
120 //        cout << 'A';
121         if(check(tmp)){
122             printf("%d",tmp.step);
123             swi = false;
124             return;
125         }
126         
127         PUSH(tmp);
128     }
129 }
130 
131 int main(){
132     
133     Input();
134     bfs();
135     
136     return 0;
137 }
A tired day = =

 

转载于:https://www.cnblogs.com/Chorolop/p/7327877.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专访王田苗:机器人是“刚需”,市场正处于逆周期增长

来源&#xff1a;亿欧【本文三大核心点】一、未来老龄化社会的到来与新生代快节奏生活工作的方式让智能机器人处于长期刚性需求。二、人工智能算法、软体材料、5G互联网开放软件平台、多机与人机协作、云服务租赁共享模式等技术给新一代机器人发展带来了大量的产业机遇。三、中…

php算法入门,a011.PHP实战:加密解密,简单算法入门

原标题&#xff1a;a011.PHP实战&#xff1a;加密解密&#xff0c;简单算法入门在PHP编程中&#xff0c;很多时候我们会遇到传递信息的问题&#xff0c;而传递过程中为了安全&#xff0c;我们肯定是要进行加密和解密的&#xff0c;这里&#xff0c;我们来说一说使用PHP怎么进行…

tomcat的安装及配置

1.首先进tomcat官网下载zip压缩文件&#xff1a;http://tomcat.apache.org/download-90.cgi 2.解压缩到指定文件压&#xff08;后面配置环境变量会用到&#xff09; 3.配置环境变量 4.打开解压后文件中的bin文件夹&#xff0c;运行startup.bat 如上图结果则配置成功 5.打开浏览…

好文|奔向宇宙,揭开太空机器人的神秘面纱

来源&#xff1a;千慧知识产权空间机器人是在太空中执行空间站建造与运营、卫星组装与服务、行星表面探测与实验等任务的一类特种机器人&#xff0c;是世界航天大国竞相发展的热点领域。当前&#xff0c;空间机器人已经在国际空间站、飞船、卫星等飞行器的在轨维护、空间装配、…

关于6G,这些你应该了解

来源&#xff1a;内容来自公众号中国电子报——赛迪智库前 言当前&#xff0c;全球新一轮科技革命和产业变革正在加速演进&#xff0c;人工智能&#xff08;AI&#xff09;、VR/AR、三维&#xff08;3D&#xff09;媒体和物联网等新一代信息通信技术的广泛应用产生了巨大的传输…

php显示动态通告信息方式,Joomla PHP通知,警告和错误指南

网站不可避免地会出现问题。无论您使用的是Joomla还是其他产品&#xff0c;都需要发现并修复问题。Joomla使用PHP&#xff0c;当PHP有问题时&#xff0c;它将向您报告。但是&#xff0c;这些错误通常会出现在您的网站上&#xff0c;并且对访问者可见&#xff1a;在本教程中&…

Facebook爆锤深度度量学习:该领域13年来并无进展!网友:沧海横流,方显英雄本色...

来源&#xff1a;AI科技评论近日&#xff0c;Facebook AI和Cornell Tech的研究人员近期发表研究论文预览文稿&#xff0c;声称近十三年深度度量学习&#xff08;deep metric learning&#xff09; 领域的目前研究进展和十三年前的基线方法(Contrastive, Triplet) 比较并无实质提…

不可不看的干货——机器人自主系统的技术构建:感知、决策和执行

来源&#xff1a;机器人大讲堂近年来&#xff0c;随着工业 4.0 标准的不断推进和人工智能、物联网、大数据等技术的快速发展&#xff0c;机器人产业迎来新一轮浪潮&#xff0c;正逐步向系统化、模块化、智能化的方向发展。除了传统的工业机器人外&#xff0c;在特种机器人和服务…

php伪数组转换为数组,JavaScript伪数组用法实例

在Javascript中什么是伪数组&#xff1f;伪数组(类数组)&#xff1a;无法直接调用数组方法或期望length属性有什么特殊的行为&#xff0c;但仍可以对真正数组遍历方法来遍历它们。本文实例讲述了JavaScript伪数组用法&#xff0c;希望能帮助到大家。1.典型的是函数的 argument参…

前沿科技 | 中科院科学家研究揭示奥陶纪末生命大灭绝新机制

来源&#xff1a;中国科学院火山活动是全球气候变化和海洋化学组成巨变的主要驱动力之一&#xff0c;其中“平流层火山喷发”&#xff08;即火山物质喷发至平流层-大约离地表20公里&#xff09;对全球气候有直接的影响。在过去5.4亿年的地质历史中&#xff0c;发生了数次大规模…

空地通信传输详解——飞机是这样和地面通信的

来源&#xff1a;电子万花筒飞机在空中飞行时是如何与地面联络的呢&#xff1f;飞机在飞行中的数据如何进行空地传输呢&#xff1f;那些部件的数据可以被传输呢&#xff1f;飞机的导航、通信、识别系统主要就是保证飞行的&#xff0c;保障在天上、空对空、空对地、地对空、空对…

​IBM人工智能芯片的新进展

来源&#xff1a;内容由半导体行业观察&#xff08;ID&#xff1a;icbank&#xff09;编译自「Venturebeat」&#xff0c;谢谢。IBM苏黎世实验室的研究人员本周在Nature Communications上发表了一篇论文。在文中他们声称&#xff0c;基于相变存储器的技术&#xff0c;他们已经开…

php程序员写bug,程序员的修炼-我们为什么会编写BUG

在最近的一周,我维护的业务系统出现了很多坏毛病,一周七天crash掉了4次,每次都需要都是因为一点很小的问题,触发了蝴蝶效应,导致整个系统全盘崩溃,于是产生除了叙述本篇的想法,当然这并不是为了掩盖我在Coding上的一些细节处理和职责疏忽&#xff0c;只是为了从根本的细节上去分…

强人工智能和弱人工智能

来源&#xff1a;人机与认知实验室人工智能的一个比较流行的定义&#xff0c;也是该领域较早的定义&#xff0c;是由当时麻省理工学院的约翰麦卡锡在1956年的达特矛斯会议上提出的&#xff08;对此有争议&#xff09;&#xff1a;人工智能就是要让机器的行为看起来就像是人所表…

张亚勤2020寄语哥伦比亚大学毕业生:引领未知时代

(哥伦比亚大学巴特勒图书馆&#xff09;2020年5月18日&#xff0c;人工智能和数字视频的世界级科学家和企业家&#xff0c;美国艺术与科学院院士、百度前总裁、清华大学智能科学讲席教授张亚勤博士&#xff0c;在哥伦比亚大学工程学院的毕业典礼上发表了主题演讲。张亚勤说:“面…

科技部部长:基础研究是科技创新“总开关”

来源&#xff1a;中国新闻网中新社北京5月19日电 (记者 孙自法)“基础研究是科技创新的‘总开关’&#xff01;”言及基础研究在中国科技发展、增强原始创新能力中的地位与作用&#xff0c;中国科学技术部部长王志刚这样概括道。国务院新闻办公室19日下午在北京举行加快建设创新…

从通用到专用,5G时代IP核的新故事

来源&#xff1a;半导体行业观察如同芯片在不断迭代&#xff0c;IP核也在不断进步。集成电路技术60年来基本遵循摩尔定律的演进规律。随着进入后摩尔时代&#xff0c;即两年一代技术更换的节奏开始放缓&#xff0c;设计和制造企业开始更加重视产品的多样化发展&#xff0c;而不…

连续信号与系统频域分析的matlab实现,实验十三 连续信号与系统频域分析的MATLB实现...

实验十三 连续信号与系统频域分析的MATLB实现 实验十三 连续信号与系统频域分析的 MATLAB 实现70实验十三 连续信号与系统频域分析的 MATLAB 实现一、实验目的 1. 掌握连续时间信号频谱特性的 MATLAB 分析方法&#xff1b;2.掌握连续系统的频率响应 MATLAB 分析方法方法。二、实…

[机器学习] Apriori算法

适用场合 Apriori算法包含两部分内容&#xff1a;1&#xff0c;发现频繁项集 2&#xff0c;挖掘关联规则。 通俗地解释一下&#xff0c;就是这个意思&#xff1a;1.发现哪些项目常常同时出现 2.挖掘这些常常出现的项目是否存在“如果A那么B”的关系。 举个例子&#xff1a;网店…

华为发布《自动驾驶网络解决方案白皮书》

来源&#xff1a;华为近日&#xff0c;全球分析师大会HAS 2020期间&#xff0c;华为面向全球发布《自动驾驶网络解决方案白皮书》&#xff0c;系统阐述未来网络架构、运维架构和其关键技术&#xff0c;通过网元、网络和云端的三层AI能力协同&#xff0c;使能网络走向极简超宽、…