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 <iostream> #include<string.h> using 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<<"结束!"<<endl;OutPut(Result);break;}}return 0; } void Flip(char & s,int i) {s=s^(1<<i); } int GetChar(char t,int j) {return (t>>j)&1; } void SetChar(char & t,int j,int s) {if(s==1)t=t|(1<<j);elset=t&(~(1<<j)); } void OutPut(char * t) {for(int i=0;i<5;i++){for(int j=0;j<6;j++){cout<<GetChar(t[i],j);cout<<" ";}cout<<endl;} }
转载于:https://www.cnblogs.com/JsonZhangAA/p/7261668.html
C++基础算法学习——熄灯问题相关推荐
- 【基础】基础算法学习笔记(状态空间)
基础算法学习笔记(状态空间) 一.状态空间 1.定义(什么是状态空间):一个实际问题的各种可能情况构成的集合.(解释:为什么需要算法来和程序来处理问题?如果一道题可以手算得到答案,换句话说就是存在通过 ...
- 基础算法学习大纲(附加yxc大佬算法模板)
基础算法学习大纲总结 学习算法路线 1.基础算法 模板 1.排序 2.二分 3.高精度 4.前缀和与差分 5.双指针算法 6.位运算 7.离散化 8.区间合并 2.数据结构 模板 1.链表与邻接链表( ...
- 算法简介及计算机算法基础——算法学习(四)
文章目录 关注算法缘由 描述计算机算法基础 描述运行时间 循环不变式 参考文档 接下来的算法学习内容主要根据<程序员必读经典(算法基础+计算机系统)>一书而写,作为读书笔记,感兴趣的可以见 ...
- 小白机器学习基础算法学习必经之路
https://www.toutiao.com/a6657427848900379150/ 2019-02-14 15:21:13 未来,人工智能是生产力,是变革社会的主要技术力量之一. 掌握人工智能 ...
- 基础算法学习(二)_二叉树及应用赫夫曼编码
这次学习的重点在于二叉树的性质.链式存储结构(也就是C语言的struct)和赫夫曼编码,学习的教材是清华大学出版社出版的C语言版数据结构. 首先是二叉树: 二叉树(Binary Tree)是另 ...
- 基础类与基础算法学习
常用的类 1 .date类 date a=new date();//默认为当前时间 注:要求时间是标准时间还是中国时间 date可带入参数 eg:long x=10086l;即为1970.1.1.00 ...
- C++基础算法学习——完美立方
形如a 3 = b 3 + c 3 + d 3 的等式被称为完美立方等式.例如 12 3 = 6 3 + 8 3 + 10 3 .编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, ...
- ACM基础算法入门及题目列表
对于刚进入大学的计算机类同学来说,算法与程序设计竞赛算是不错的选择,因为我们每天都在解决问题,锻炼着解决问题的能力. 这里以TZOJ题目为例,如果为其他平台题目我会标注出来,同时我的主页也欢迎大家去访 ...
- 人工智能算法:卷1基础算法+卷2受大自然启发的算法+卷3深度学习和神经网络电子书
ISBN:9787115005786 包装:平装 字数:538000 页数:598 版次:7 开本:16开 用纸:胶版纸 正文语种:中文 人工智能算法:卷1基础算法+卷2受大自然启发的算法+卷3深度学 ...
最新文章
- 每天都在用 Map,这些核心技术你知道吗?
- 《软件观念革命——交互设计精髓》读书笔记(一)
- 计算机怎么设置计算机组和用户,怎样设置同一工作组的计算机资源共享
- Visual Studio 2010 Ultimate敏捷功能特性(上)
- nyoj990蚂蚁感冒
- 中石油训练赛 - 奎奎画画(思维+并查集+离线处理)
- SQL Server遗失管理权限账号密码怎么办?
- c语言只能最大值不能最小值,用c语言编写输入10个无序的整数,去掉一个最大值和最小值,然后求其平均值...
- 自定义 Spark item 的渲染器
- .net、mono和C#
- [走走看看]转载两篇文章:挂牌和追经
- Linux文件类型与文件权限详解(三)
- verilog 之数字电路 边沿检测电路
- idea使用svn拉取项目代码_IDEA使用svn下载项目,并配置svn项目和tomcat进行访问
- 2055041-21-7,Acid-PEG4-S-PEG4-acid在EDC和HATU等活化剂存在下,羧酸基团可与伯胺反应
- 微信公众号开发 糟糕的体验_糟糕的开发人员–好老板
- JavaFX入门(一):我的第一个JavaFX程序
- 19 「沉淀」,20「继续沉淀」
- 无法连接到宽带连接被远程计算机终止,无法连接到宽带连接?
- 2.阿里实人认证 .net 准备工作2 转换demo
热门文章
- 深入理解ThreadLocal变量的功能和使用
- 中考可用计算机吗,中考能用什么计算器 可以带电子手表吗
- android mimetype类型,如何确定android中的MIME类型?
- matlab图像处理 推荐,Matlab计算机视觉、图像处理工具箱推荐
- 西门子real是什么数据类型_如何实现西门子新一代精智屏及基本屏与 S120 的直接通讯...
- bat如何执行完上一条命令_一条更新语句是如何执行的?
- win10语音语言服务器,win10系统:朗读女语音库(发音人)安装方法说明
- php修改ip6地址为ip4,CentOS7 设置静态IPv6/IPv4地址
- java就业班学什么呀_传智播客JAVA就业班学习心得
- python 配置文件解析_python 解析配置文件