博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P2040 打开所有的灯
阅读量:6902 次
发布时间:2019-06-27

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

P2040 打开所有的灯

题目背景

pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz。。。

题目描述

这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的开关状态全部改变。现在你的任务就是就是告诉pmshz要全部打开这些灯。

例如 0 1 1

1 0 0

1 0 1

点一下最中间的灯【2,2】就变成了

0 0 1

0 1 1

1 1 1

再点一下左上角的灯【1,1】就变成了

1 1 1

1 1 1

1 1 1

达成目标。最少需要2步。

输出2即可。

输入输出格式

输入格式:

 

九个数字,3*3的格式输入,每两个数字中间只有一个空格,表示灯初始的开关状态。(0表示关,1表示开)

 

输出格式:

 

1个整数,表示最少打开所有灯所需要的步数。

 

输入输出样例

输入样例#1:
0  1  11  0  01  0  1
输出样例#1:
2

说明

这个题水不水,就看你怎么考虑了。。。。

 

大水题、、

少写了个等号,找了半天

#include
#include
#include
#include
#include
using namespace std;int ans=0x7fffffff;int vis[5][5],vist[5][5];int xx[5]={
0,0,0,-1,1},yy[5]={
0,1,-1,0,0};int pd(){ for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) if(!vis[i][j]) return false; return true;}void dfs(int x){ if(x>9) return ; for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) if(vist[i][j]==0) { vist[i][j]=1; for(int k=0;k<=4;k++) vis[i+xx[k]][j+yy[k]]=1-vis[i+xx[k]][j+yy[k]]; if(pd()) ans=min(ans,x); dfs(x+1); vist[i][j]=0; for(int k=0;k<=4;k++) vis[i+xx[k]][j+yy[k]]=1-vis[i+xx[k]][j+yy[k]]; }}int main(){ for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) cin>>vis[i][j]; if(pd()) ans=0; else dfs(1); printf("%d",ans); return 0;}

 

转载于:https://www.cnblogs.com/z360/p/7673895.html

你可能感兴趣的文章
CentOS7.x 搭建 GitLab 教程
查看>>
动态Result配置
查看>>
如何通过trn日志文件恢复SQL Server 事务日志 还原 备份
查看>>
DAY3-“忙里偷闲”找你玩耍2018-1-11
查看>>
科目二考试标准操作要领
查看>>
磁盘性能测试学习之路1-认识磁盘的各项参数
查看>>
ubuntu用apt安装apache2时,出现E:未发现软件包 apache2
查看>>
POJ1251 Jungle Roads(Kruskal)(并查集)
查看>>
七牛,前端上传图片
查看>>
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
查看>>
qml 一个信号与多个方法关联 和 c++信号与槽类似写法
查看>>
简说Python生态系统的14年演变
查看>>
response.setHeader的各种用法 ------ 笔记(一)
查看>>
关于@Override
查看>>
java Servlet接口及应用
查看>>
在汇编代码中调用C函数
查看>>
centos6.5 keepalived检测脚本
查看>>
使用Xcode7非美刀购买开发者帐号,非越狱安装IOS ipa
查看>>
并发编程与高并发学习笔记一
查看>>
json的那些事儿
查看>>