java 熄灯问题_C++基础算法学习——熄灯问题
有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行– 每个按钮的位置上有一盏灯– 当按下一个按钮后, 该按钮以及周围位置(上边, 下边,左边, 右边)的灯都会改变状态26熄灯问题 POJ1222– 如果灯原来是点亮的, 就会被熄灭– 如果灯原来是熄灭的, 则会被点亮 在矩阵角上的按钮改变3盏灯的状态 在矩阵边上的按钮改变4盏灯的状态 其他的按钮改变5盏灯的状态27熄灯问题 POJ1222 与一盏灯毗邻的多个按钮被按下时,一个操作会抵消另一次操作的结果 给定矩阵中每盏灯的初始状态,求一种按按钮方案,使得所有的灯都熄灭熄灯问题 POJ1222 输入:– 第一行是一个正整数N, 表示需要解决的案例数– 每个案例由5行组成, 每一行包括6个数字– 这些数字以空格隔开, 可以是0或1– 0 表示灯的初始状态是熄灭的– 1 表示灯的初始状态是点亮的29熄灯问题 POJ1222 输出:– 对每个案例, 首先输出一行,输出字符串 “PUZZLE #m”, 其中m是该案例的序号– 接着按照该案例的输入格式输出5行 1 表示需要把对应的按钮按下 0 表示不需要按对应的按钮 每个数字以一个空格隔开
代码如下:
#include #includeusing namespace std;char Oright[5];char Light[5];char Result[5];void SetChar(char & t,int j,int s);void OutPut(char * t);int GetChar(char t,int j);void Flip(char & s,int i);int main()
{ int switches; for(int i=0;i<5;i++)//一个位一个位的存储。 { for(int j=0;j<6;j++)
{ int s;
cin>>s;
SetChar(Oright[i],j,s);
}
} for(int i=0;i<64;i++)
{
memcpy(Light,Oright,sizeof(Oright));
switches=i; for(int j=0;j<5;j++)//对于i的值,每行开始测试 {
Result[j]=switches;//Result存储的是开关的按压方案。
for(int k=0;k<6;k++)//每列开始测试 { if(GetChar(switches,k))
{ if(k>0)
Flip(Light[j],k-1);//左边开始变化 Flip(Light[j],k); if(k<5)
Flip(Light[j],k+1);//右边开始变化 }
} if(j<4)
Light[j+1]^=switches;
switches=Light[j];
} if(Light[4]==0)
{
cout<
OutPut(Result); break;
}
} return 0;
}void Flip(char & s,int i)
{
s=s^(1<
}int GetChar(char t,int j)
{ return (t>>j)&1;
}void SetChar(char & t,int j,int s)
{ if(s==1)
t=t|(1<
t=t&(~(1<
}void OutPut(char * t)
{ for(int i=0;i<5;i++)
{ for(int j=0;j<6;j++)
{
cout<
cout<
}
cout<
}
java 熄灯问题_C++基础算法学习——熄灯问题相关推荐
- C++基础算法学习——熄灯问题
有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行 – 每个按钮的位置上有一盏灯 – 当按下一个按钮后, 该按钮以及周围位置(上边, 下边, 左边, 右边)的灯都会改变状态 26熄灯问题 POJ1 ...
- 【基础】基础算法学习笔记(状态空间)
基础算法学习笔记(状态空间) 一.状态空间 1.定义(什么是状态空间):一个实际问题的各种可能情况构成的集合.(解释:为什么需要算法来和程序来处理问题?如果一道题可以手算得到答案,换句话说就是存在通过 ...
- 基础算法学习大纲(附加yxc大佬算法模板)
基础算法学习大纲总结 学习算法路线 1.基础算法 模板 1.排序 2.二分 3.高精度 4.前缀和与差分 5.双指针算法 6.位运算 7.离散化 8.区间合并 2.数据结构 模板 1.链表与邻接链表( ...
- 算法简介及计算机算法基础——算法学习(四)
文章目录 关注算法缘由 描述计算机算法基础 描述运行时间 循环不变式 参考文档 接下来的算法学习内容主要根据<程序员必读经典(算法基础+计算机系统)>一书而写,作为读书笔记,感兴趣的可以见 ...
- 小白机器学习基础算法学习必经之路
https://www.toutiao.com/a6657427848900379150/ 2019-02-14 15:21:13 未来,人工智能是生产力,是变革社会的主要技术力量之一. 掌握人工智能 ...
- 0基础学java培训_零基础可以学习java课程么?零基础java培训需要多久?
零基础可以学习java课程么? 第一.兴趣爱好是重要,总体目标很重要 在你学习培训java以前,一定要清晰自身对java是不是确实很感兴趣,還是一时头昏脑涨.终究学习培训java不仅要把握技术性,也要 ...
- Java入门篇——零基础如何学习Java
当今是一个互联网高速发展的时代,不管是传统互联网还是移动互联网,都已经和人们的日常生活息息相关.Java作为一门高级编程语言在信息科技时代有着广泛的应用.譬如电子政务.金融.通信.各种企业级的应用管理 ...
- java自学语法_java 基础语法学习
注释 单行注释 多行注释 文档注释 public class HelloWorld { public static void main(String[] args) { //单行注释 //输出一个He ...
- 基础算法学习(二)_二叉树及应用赫夫曼编码
这次学习的重点在于二叉树的性质.链式存储结构(也就是C语言的struct)和赫夫曼编码,学习的教材是清华大学出版社出版的C语言版数据结构. 首先是二叉树: 二叉树(Binary Tree)是另 ...
- Java核心技术 卷1 基础知识 学习笔记——第三章 java的基本程序设计结构
1. 一个正整数除以0的结果为正无穷大,0/0或者负数的平方根的结果为NaN(不是一个数字): if(x==Double.NaN)//is never true,所有非数值的值都认为是不同的 if(D ...
最新文章
- 微信拦截URL,使用自己内置的web组件打开URL,为什么没人声讨?
- 汉字内码UNICODE转换表
- Unix/Linux操作系统中如何在sqlplus/rman中使用方向键
- PB级分布式大数据的处理和分析应用
- 备战秋招 |《百面机器学习》算法+leetcode开班报名!
- VC内存对齐准则(Memory alignment)
- hp服务器pe系统安装win7系统安装系统安装,惠普Folio 1040 G1 u盘pe如何重装win7系统...
- 《Python编程初学者指南》——第1章 启程:Game Over程序 1.1 剖析Game Over程序
- 持续输出|我的 2019 年
- 5号,7号电池充电时间计算方法
- startx analyze
- 用go实现linux命令行
- 737到底是什么问题难到了波音公司?
- 深度学习中的温度参数(temperature parameter)--疑问待解决
- 在电脑上限制他人网速--需要同一个区域网
- 读王坚博士的《在线》有感
- 54.查表法按日期生成流水号的案例
- User-Agent结构介绍及主流浏览器User-Agent大全
- Emoji的编码格式(emoji 简介)
- 元宇宙工业领域落地方法探讨
热门文章
- OrthoFinder 进行直系同源基因分析教程
- 版本服务器 哪些文件不应该提交,总结firefly版本服务器使用方法
- Java中文繁简体转换工具
- 用foobar2000播放云服务器文件,foobar2000英文版怎么用 foobar2000怎么播放音频
- Android视频播放器没声,Windows/Android/iOS全平台支持的视频播放器EasyPlayerPro,iOS版播放无音频问题如何解决?...
- 日语“不要”有几种说法。
- 测试apk-异常管控NetTraffic攻击者开发
- Excel去掉下划线首字母小写的公式
- VB.net 播放 WAV音乐
- 比特大陆招股书曝光;阿里否认阻挠滴滴收购OFO;Uber巨资了结数据泄露案| 雷锋早报...