使用c语言实现熄灯问题 5C

按行计算已经实现,但是在按列计算时出现了答案错误的问题,不知道哪里出错了,望指正

//一个6行5列的方格,按下其中一个,其及其上下左右共5个方块都会改变(开/关),设计程序将其全部熄灭

#include //设计一个flag,=1则亮,=0则熄,push,=1则按,=0则不按
#include
int puzzle[7][7],press[7][7];//puzzle是当前灯的状态,press是输出的按法

int guess(){
int i,j;
for(i=1;i<6;i++){
for(j=1;j<6;j++){
press[i][j+1]=(puzzle[i][j]+press[i][j]+press[i-1][j]+press[i+1][j]+press[i][j-1])%2;//根据press第1列和Puzzle数组,计算press其他行的值
}
}
for(i=1;i<6;i++){
if((press[i-1][6]+press[i][6]+press[i+1][6]+press[i][5])%2!=puzzle[i][6])//判断所计算Press数组能否熄灭第6列的所有灯
return 1;
}
return 0;
}

void meiju(){//枚举press第一行的所有可能性,从6个0开始,将每行的数看成1个6位2进制数,大于1则向后进位(ps:更简便的做法是按列枚举)
int i,success;
for(i=1;i press[i][1]=0;
}
while(guess()==1){
press[1][1]++;
i=1;
while(press[1][i]>1){
press[1][i]=0;
i++;
press[1][i]++;
}
}
}

void main(){
int cases,i,j;
printf("input the puzzle:\n");
for(i=0;i<7;i++){
press[0][i]=press[6][i]=0;
}
for(i=1;i<6;i++){
press[i][0]=0;
}
for(i=1;i<6;i++){
for(j=1;j<7;j++){
scanf("%d",&puzzle[i][j]);
}
}
meiju();
printf("the answer is:\n");
for(i=1;i<6;i++){
for(j=1;j<7;j++){
printf("%d ",press[i][j]);
}
printf("\n");
}
system("pause");
}

正解:
input the puzzle:
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
the answer is:
0 0 1 1 0 0
1 0 1 1 0 1
0 1 0 0 1 0
1 0 1 1 0 1
0 0 1 1 0 0

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
熄灯问题
Description:假设围绕着一个圆形舞台有N个彩灯,编号从0到N-1,1<=N<=50,为了配合演出效果需要进行花式熄灯。熄灯的规则是从第x号灯开始熄灭,然后向编号更大的方向数,每逢y个亮着的灯后灭掉当前数到的亮着的彩灯,直到灭完为止。注意N-1号灯与0号灯互为邻居,数到N-1号灯,下一个为0号灯。输入:彩灯数量N,第一个灭灯的位置x,以及间隔y,使用空格间隔输入输出:灭灯的顺序,一行内输出,
枚举 熄灯问题java实现
枚举  熄灯问题java实现import java.util.Scanner; //熄灯问题 public class S4 { static char[] orLights=new char[5]; //每个元素对应灯矩阵的一行 static char[] light=new char[5]; //变化中的灯的矩阵 static char[] resu...
使用C语言实现
使用HMAC-SHA256和HMAC-SHA1加密算法对报文进行加密。
openjudge 百练 熄灯问题
熄灯问题 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Description 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,
【程序设计与算法】熄灯问题
按下一个开关,上下左右都会变化 代码如下: #include #include #include #include using namespace std; char oriLinghts[5];//存放输入原始的灯 char lights[5];//变化灯的矩阵 char result[5];//最终结果矩阵 int GetBit(char c,int i)//取c的第i
枚举之熄灯问题
1.巧用位运算2.用二进制数来枚举开关状态#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;string&amp;gt; #include &amp;lt;iostream&amp;gt; #include &amp;lt;stack&amp;gt; #include &amp;lt;math.h&amp;gt; #includ
百练2811 熄灯问题
1. 第2次按下同一按钮时,将抵消第1次按下产生的结果,所以每个按钮最多只需按下一次2. 各个按钮被按下的顺序对最终结果没有影响3. 对第1行中每盏亮着的灯,按下第2行中对应的按钮,就可以熄灭第1行中的全部灯。如此重复,就可以熄灭第2,3,4行的全部灯。最后判断这种按灯方式是否将第5行的灯也成功熄灭。...
poj 2811:熄灯问题
描述 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。 在上图中,左边矩阵中用X标记的按钮表示被按下,右边的矩阵...
熄灯问题——枚举
1 问题描述 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。请你写一个程序,确定需要按下哪些按钮,恰好使得所有的灯都熄灭。
百练 2811: 熄灯问题
百练 2811: 熄灯问题
POJ1222 熄灯问题
1、问题分析 题目给出一个5x6的01矩阵,0表示该位置的灯是熄灭的,1表示该处的灯是开着的,题目要求给出一种熄灯方案使得最后按下按钮后所有的灯都被熄灭。这里按下某处的按钮并不是只有该处的灯被熄灭或开启,而是如果它周围的灯(如果有的话)的状态都会反转(原来开着的灯熄灭,熄灭的灯开启)。具体的描述见原题。题目地址 2、求解思路 本题可以采用枚举法求解,具体为什么用枚举法可以看以下的分析。 首先注意到...
枚举算法之熄灯问题
一、 熄灯问题 有一个有按钮组成的矩阵 ,其中每行有6个按钮,共5行 每个按钮的位置上有一盏灯 当按下一个按钮后,该按钮以及周边位置(上边、下边、左边、右边)的灯都会改变 如果灯原来时点亮的,就会被熄灭 反之亦然 情况分析 ***如果在矩阵的 角上 的按钮 改变 3 盏灯 如果在矩阵的边上 改变 4 盏灯 其余情况 这改变 5 盏灯*** ![在这里插入图片描述](https://img-...
使用c语言实现注释转换
使用c语言实现注释转换,只要是将c注释转换为c++注释 整体思路 首先,我们需要两个文件,分别存放注释转换前的代码(input.c)和转换后的代码(output.c) 之后,我们对注释转换过程中的出现的几种状态进行分析,得出几种状态之间相互的关系 同时,我们需要对注释转换过程中出现的几种问题进行分析 //1.一般情况 int i = 0 //2.换行问题 /*int ...
使用C语言实现字符串分割
之前分享了一篇使用C++(std::string 作为容器)进行字符串分割的博文: https://blog.csdn.net/r5014/article/details/82802664   现在又想用C语言做一个字符串分割的函数,大概功能是这样: 需要分割的字符串“    this is a charactor  raw.    ” 使用 ' '分割 分割之后会返回一个char** ...
使用c语言实现单链表
该文件是我最近闲来无事实现的链表的方法,包括增加,删除,显示等功能,希望对刚接触或者忘记的同学们能起到复习和快速入门的作用
使用C语言实现队列
#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;malloc.h&amp;gt;typedef struct queue_node { struct queue_node* prev; struct queue_node* next; void *p;//节点的值} node;// 表头static node *phead = NULL;static int count = 0;...
使用C语言实现单链表
List.h文件 #ifndef __LIST_H__ #define __LIST_H__ #include #include #include typedef int Data; typedef struct List { Data arrary; struct List* next; }List; List* BuyList(Data x);
使用C语言实现串口通信
串口发送接收程序,使用于使用串口发送或接收数据的场合。
使用c语言实现图的遍历
实现图的创建 打印一个有向图 深度优先遍历 广度优先遍历 希望对大家有帮助啊
使用c语言实现文件传输
使用c语言技术实现文件传输
算法基础_熄灯问题
提示: 用二进制数进行枚举:讲一个int类型的数从0循环到2^k-1,k是所需用到的比特数 用特定字符串等的首字母加switch_case判断输入;
POJ 1222 熄灯问题
    题目给出一个5*6的矩阵:0表示灯是灭着的,1表示灯是开着的,要求给出每盏灯的开关情况,让所有灯灭掉。开关规则:当按下一盏灯的开关,它上下左右四盏灯也会开关(亮的灭掉,暗的亮起),边角和边缘影响的灯会有不同。     该如何确定是否按下每盏灯的开关呢?最简单就是用穷举。每盏灯有两种情况,5*6共30盏灯,一共2^30种可能。太多了,应该尽可能地“减枝”,让穷举范围尽可能小,以不至于超时。...
熄灯问题 poj1222
/* *思路1:枚举所有可能的开关状态,对每个状态计算下最后灯的情况,看是否都熄灭 * 每种按钮有两种状态,一共有30个开关,那么状态数是2的30次方,太多不可取 *思路2:如何减少枚举的数目呢? 如果存在某个局部,一旦这个局部状态被确定后,那么剩余其他部分的状态只能 是确定的一种或者不多的n种,那么只需要枚举这个局部状态即可 */ #inc...
POJ2811熄灯问题
题目描述 解题思路:因为每盏灯最多只需要按下一次,考虑到数据量比较小,一共只有5*6=30盏灯,可以用枚举的方法。但是枚举所有按钮状态的次数为2^30,明显复杂度太高,需要考虑进行优化。         事实上,只用枚举第一行或者第一列按钮的状态即可。下面以枚举第一行按钮的状态为例。因为第一行灯的状态由第一行和第二行的按钮决定,所以第一行按钮的状态确定之后,为是第一行的灯全部熄灭,第二...
算法设计之枚举 熄灯问题
局部思想:在枚举时有的时候不一定要枚举每一种情况,在确定了一局部的时候就能推出全局,熄灯问题就是这种例子。 位运算枚举:如果枚举量是01组合的时候,用位来枚举,在时间和空间的复杂度都大大减小。
枚举——熄灯问题
题目描述:   有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。   所以在5x6的矩阵中,左边矩阵中用X标记的按
熄灯问题 - 详解
说明:算法并非原创,来源于网上大神,本文只是对算法进行详细的解释。题目来源 - [NOI OpenJudge]题目描述 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改
熄灯问题+(进阶)
https://vjudge.net/problem/OpenJ_Bailian-2811 熄灯问题是比较典型的算法题目(枚举),这里展示两种解法,供大家参考: 解发一: #include &amp;lt;iostream&amp;gt; #include&amp;lt;string&amp;gt; #include&amp;lt;cstring&amp;gt; #include&amp;lt;memory&amp;gt; using namespac...
算法——熄灯问题
//解决熄灯问题(将所有灯都熄灭) //输入: /* 第一行输入一个正整数N,表示需要解决的案例数 每个案例为5*6的矩阵(灯的初始状态) 这些数字以空格隔开,0熄灭,1点亮 */ //输出: /* 对每个案例,首先输出一行 输出字符串“PUZZLE #m”,其中m是该案例的序号 接着按照该案例的输入格式输出5行 1表示需要把对应的按钮按下 0表示不需要按 每个数字以空格隔开 */ //分析: /...
OpenJudege-2811 熄灯问题 解题报告
OpenJudge - 2811 问题描述 熄灯问题 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。 在上...
回炉-熄灯问题
进来突然意识到算法的重要性,可惜已经没有充足的时间去进行专业的训练了,只能慢慢挤时间做几个题练习一下聊以安慰,希望能多坚持几天吧,奉劝各位想学算法的同学一定要趁早啊。 poj1222 解析见郭炜老师的程序设计与算法(二)算法基础 熄灯问题 代码如下 #include &amp;lt;iostream&amp;gt; #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;cstrin...
noiopenjudge1813:熄灯问题 贪心
noiopenjudge1813:熄灯问题贪心: 题解写在题面上。可以想到 在处理 i 行 的时候保证 i 行之前的状态一定是合法的状态, i 行之后的不管、 这样我一遍处理下去。 因为第一行无论是什么状态我都可以通过第二行而改变 所以枚举一遍第一行的状态然后处理即可。#include <iostream> #include <queue> #include <cstdio> #include
枚举算法--熄灯问题
最近在学习一些基础的算法,编程这种事情,只能慢慢摸索,自己多去锻炼才会取得好的效果!! 熄灯问题 问题:对于给定的一个按钮矩阵5*6,使得改变每个元素的状态之后(同时改变一个状态会使得它的周围的状态都会改变)全部的灯都为熄灭状态。(其中0代表是熄灭的,1代表是亮着的) 基本思路: 1,如果直接开始采用枚举法,则共有2^5*6要列举的,不妨选取一个局部状态,如果确定了该局部状态,后面的状态会
POJ1222熄灯问题
问题描述: 程序代码: /* *思路1:枚举所有可能的开关状态,对每个状态计算下最后灯的情况,看是否都熄灭 * 每种按钮有两种状态,一共有30个开关,那么状态数是2的30次方,太多不可取 *思路2:如何减少枚举的数目呢? 如果存在某个局部,一旦这个局部状态被确定后,那么剩余其他部分的状态只能 是确定的一种或者不多的n种,那么只需要枚举这个局部状态即
欢迎使用CSDN-markdown编辑器
熄灯问题 1813:熄灯问题 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮
4-熄灯问题
总结 用二进制数进行枚举 位运算的使用
枚举-熄灯问题
问题描述: 有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行。 每个按钮的位置上有一盏灯,当按下一个按钮后, 该按钮以及周围位置(上边, 下边, 左边, 右边)的灯都会改变状态 – 如果灯原来是点亮的, 就会被熄灭 – 如果灯原来是熄灭的, 则会被点亮  在矩阵角上的按钮改变3盏灯的状态 在矩阵边上的按钮改变4盏灯的状态 其他的按钮改变5盏灯的状态 与一盏灯毗邻的多
1813:熄灯问题 ⑤
描述有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。在上图中,左边矩阵中用X标记的按钮表示被按下,右边的矩阵表示灯状态的改变。...
枚举:熄灯问题
POJ1222 EXTENDED LIGHTS OUT 熄灯问题
NOI:1813 熄灯问题
题解链接题解:跟poj的1753类似(https://blog.csdn.net/wuzhenzi5193/article/details/80044425),不过需要将结果保存下来         这里的枚举只需要枚举第一行即可,然后每次后面的枚举都需要根据前一行来进行判断是否需要按灯注意:按一个灯会改变周围的状态,但是注意此时只按了这一个灯,周围只是改变状态并没有按灯         每次从第...
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法