有一个由按钮组成的矩阵, 其中每行有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[];
char Light[];
char Result[];
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=;i<;i++)//一个位一个位的存储。
{
for(int j=;j<;j++)
{
int s;
cin>>s;
SetChar(Oright[i],j,s);
}
}
for(int i=;i<;i++)
{
memcpy(Light,Oright,sizeof(Oright));
switches=i;
for(int j=;j<;j++)//对于i的值,每行开始测试
{
Result[j]=switches;//Result存储的是开关的按压方案。
for(int k=;k<;k++)//每列开始测试
{
if(GetChar(switches,k))
{
if(k>)
Flip(Light[j],k-);//左边开始变化
Flip(Light[j],k);
if(k<)
Flip(Light[j],k+);//右边开始变化
}
}
if(j<)
Light[j+]^=switches;
switches=Light[j];
}
if(Light[]==)
{
cout<<"结束!"<<endl;
OutPut(Result);
break;
}
}
return ;
}
void Flip(char & s,int i)
{
s=s^(<<i);
}
int GetChar(char t,int j)
{
return (t>>j)&;
}
void SetChar(char & t,int j,int s)
{
if(s==)
t=t|(<<j);
else
t=t&(~(<<j));
}
void OutPut(char * t)
{
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
cout<<GetChar(t[i],j);
cout<<" ";
}
cout<<endl;
}
}

C++基础算法学习——熄灯问题的更多相关文章

  1. 四旋翼基础算法学习2-IMU输入滤波算法

    前言: 处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法. 参考学习:四轴加速度计滤波 IMU: IMU使用MPU9250(即MPU6500),设置加速度量程± ...

  2. 栈和队列的基础算法学习(EPI)

    今天学习的时间虽然挺多的,但是总觉效率不高.其实今天没有按照计划进行EPI题目的浏览,白天去看了其他的书籍.准备找工作可能需要的状态是一定量经典的书,偶尔温习才可.书是看不完的,知识点也是固定的.所以 ...

  3. 基础算法学习2-dp

    一.算法题: 最大子阵 给定一个n×m 的矩阵 A,求A 中的一个非空子矩阵,使这个子矩阵中的元素和最大.其中,A 的子矩阵指在 A 中行和列均连续的一部分.输入格式输入的第一行包含两个整数 n,m( ...

  4. C++基础算法学习——逆波兰表达式问题

    例题:逆波兰表达式逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 ...

  5. C++基础算法学习——N皇后问题

    n皇后问题:输入整数n, 要求n个国际象棋的皇后,摆在n*n的棋盘上,互相不能攻击,输出全部方案. 代码如下: #include <iostream> #include<cmath& ...

  6. C++基础算法学习——汉洛塔问题

    汉诺塔问题古代有一个梵塔,塔内有三个座A.B.C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图).有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中, ...

  7. C++基础算法学习——猜假币

    有12枚硬币.其中有11枚真币和1枚假币.假币和真币重量不同,但不知道假币比真币轻还是重.现在,用一架天平称了这些币三次,告诉你称的结果,请你找出假币并且确定假币是轻是重(数据保证一定能找出来).例题 ...

  8. C++基础算法学习——完美立方

    形如a 3 = b 3 + c 3 + d 3 的等式被称为完美立方等式.例如12 3 = 6 3 + 8 3 + 10 3 .编写一个程序,对任给的正整数N(N≤100),寻找所有的四元组(a, b ...

  9. C++基础算法学习——生理周期

    人有体力.情商.智商的高峰日子,它们分别每隔23天.28天和33天出现一次.对于每个人,我们想知道何时三个高峰落在同一天.给定三个高峰出现的日子p,e和i(不一定是第一次高峰出现的日子),再给定另一个 ...

随机推荐

  1. 理解 React Hooks

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由志航发表于云+社区专栏 TL;DR 一句话总结 React Hooks 就是在 react 函数组件中,也可以使用类组件(classe ...

  2. utf-8的中文,一个字符占几个字节

    https://blog.csdn.net/kindsuper_liu/article/details/80202150 英文字母和中文汉字在不同字符集编码下的字节数英文字母:·字节数 : 1;编码: ...

  3. Docker安装(Debian8)-构建简单的SpringBoot应用

    安装docker 1. 建立仓库 移除已安装的docker(docker以前被称为docker或者docker-enginer现在称为docker-ce) apt-get remove docker ...

  4. JavaWeb学习 (九)————HttpServletRequest对象(一)

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  5. ubuntu安装ftp server服务

    原文地址: https://jingyan.baidu.com/article/7908e85c988b23af481ad2ae.html 首先,更新软件源,保证源是最新的,这样有利于下面在线通过ap ...

  6. 【java工具】java常用工具

    java反编译工具 可以将看不懂的.class文件转换成看得懂的.java文件,这样一来就能很方便的读懂别人编写的java代码. findbugs FindBugs-IDEA插件的使用 阿里巴巴Jav ...

  7. 【IDEA&&Eclipse】4、IntelliJ IDEA上操作GitHub

    IntelliJ IDEA集成了对GitHub的支持,使上传代码到GitHub和从GitHub下载代码更加方便快捷. 1. 分享代码到GitHub 首先需要在IntelliJ配置Git,如果没有正确配 ...

  8. Matlab function lorenzgui

    function lorenzgui %LORENZGUI Plot the orbit around the Lorenz chaotic attractor. % This function an ...

  9. C#设计模式--迭代器模式(学习Learning hard设计模式笔记)

    /// <summary> /// 抽象聚合接口 /// </summary> public interface IListCollection { Iterator GetI ...

  10. php导出excel再IE下乱码问题

    $userBrowser = $_SERVER['HTTP_USER_AGENT']; //判断是否是ie内核 $fileName = '会员列表-'.date('Y-m-d', time()).'. ...