题目背景

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  1
1 0 0
1 0 1
输出样例#1: 复制

2

说明

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

思路:看数据范围,n*n==9,所以如果搜索的话,时间复杂度为2^9可以跑过去。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int ans=0x7f7f7f7f;
bool map[][],vis[][];
bool judge(){
int bns=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(map[i][j]) bns++;
if(bns==) return true;
else return false;
}
void dfs(int sum){
if(judge()){
ans=min(ans,sum);
return ;
}
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(!vis[i][j]){
vis[i][j]=;map[i][j]=!map[i][j];
map[i-][j]=!map[i-][j];map[i][j-]=!map[i][j-];
map[i+][j]=!map[i+][j];map[i][j+]=!map[i][j+];
dfs(sum+);map[i][j]=!map[i][j];
map[i-][j]=!map[i-][j];map[i][j-]=!map[i][j-];
map[i+][j]=!map[i+][j];map[i][j+]=!map[i][j+];vis[i][j]=;
}
}
int main(){
for(int i=;i<=;i++)
for(int j=;j<=;j++)
scanf("%d",&map[i][j]);
dfs();
cout<<ans;
}

但是我们要谈就更优异的算法,我们知道,改变一盏偶数次,相当于没有改变,而改变基数词,相当于改变一次。所以这个题目可以转成二进制。

代码见这里

最新文章

  1. iOS Version 和 Build 版本号
  2. 全文搜索 Lucene.Net
  3. PHP制作验证码
  4. Mysql 配置主从服务自动同步功能
  5. 【转】[Java] HashMap使用的示例
  6. C/C++修改常量的值
  7. 2017年4月 TIOBE 编程语言排名
  8. nginx+apache前后台搭配使用
  9. js面向对象的理解
  10. 修改或添加HTTP请求头
  11. (二叉树 递归) leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
  12. Node.js建立服务、路径处理与响应
  13. C# Note34: 异常机制相关小点
  14. Django中的ORM框架使用小技巧
  15. 2017-2018-2 20165220『Java程序设计』课程 结对编程练习_四则运算
  16. Spring-----配置及对象初始化(1)
  17. 这个代码给所有带有name属性的链接加了一个背景色
  18. VS2015 LINK : fatal error LNK1264: 已指定 /GENPROFILE 但没有所需的代码生成;检测失败
  19. 第一篇,编译生成libcef_dll_wrapper
  20. python随笔(三)

热门文章

  1. HDU 2078 选课时间( 水题 )
  2. [转载] Linux新手必看:浅谈如何学习linux
  3. Matplotlib 绘图与可视化 一些属性和错误
  4. ubuntu/wireshark --Lua: Error during loading: [string &quot;/usr/share/wireshark/init.lua&quot;]:45问题解决
  5. Linux下MySql数据库常用操作
  6. servlet调用的几种方式
  7. RedHat6.5 安装OpenStack all in one-RDO方式
  8. Thrift源代码分析(七)-- TServerserver分析
  9. No connection could be made because the target machine actively refused it [::1]:808
  10. m_Orchestrate learning system---八、下拉列表(select标签)如何实现链接功能