枚举-熄灯问题(算法基础 第2周)
来源:互联网 发布:百度云同步盘mac 编辑:程序博客网 时间:2024/06/05 23:47
枚举-熄灯问题
问题讲解:
分析
讲解的很好了,再说就是画蛇添足。
源码
#include <stdio.h>int puzzle[6][8], press[6][8];/*推测验证过程:根据第一行猜测*/bool guess() { int c, r; //根据press第1行和puzzle数组,计算press其他行的值 for(r=1; r<5; r++) { for(c=1; c<7; c++) { press[r+1][c]=(puzzle[r][c]+press[r][c]+press[r-1][c]+press[r][c-1]+press[r][c+1])%2; } } //判断所计算的press数组能否熄灭第5行的所有灯 for(c=1; c<7; c++) { if ((press[5][c-1]+press[5][c]+press[5][c+1]+press[4][c])%2 != puzzle[5][c]) { return false; } } return true;}/*枚举过程:对press第1行的元素press[1][1]~press[1][6]的各种取值进行枚举*/void enumerate() { int c; bool success; //这个变量时当时定义了没排上用场吧,NodYoung注 for(c=1; c<7; c++) { press[1][c]=0; } while(guess()==false) { press[1][1]++; c=1; while(press[1][c]>1) { //累加进位 press[1][c]=0; c++; press[1][c]++; } } return ;}int main() { int cases, i, r, c; scanf("%d", &cases); for(r=0; r<6; r++) { press[r][0]=press[r][7]=0; } for(c=0; c<7; c++) { press[0][c]=0; } for(i=0; i<cases; i++) { for(r=1; r<6; r++) { for(c=1; c<7; c++) { scanf("%d", &puzzle[r][c]); //读入输入数据 } } enumerate(); printf("PUZZLE#%d\n", i+1); for (r=1; r<6; r++) { for (c=1; c<7; c++) { printf("%d ", press[r][c]); } printf("\n"); } } return 0;}
0 0
- 枚举-熄灯问题(算法基础 第2周)
- 枚举算法--熄灯问题
- 枚举-画家问题(算法基础 第2周)
- 枚举-拨钟问题(算法基础 第2周)
- 1813:熄灯问题(2.1基本算法之枚举)
- 算法基础_熄灯问题
- 算法设计之枚举 熄灯问题
- 熄灯问题(ACM)(枚举案例)
- 枚举应用(1)-熄灯问题
- 熄灯问题(枚举、位运算)
- 枚举—案例(熄灯问题poj1222)
- 枚举--熄灯问题
- 枚举之熄灯问题
- 枚举:熄灯问题
- 枚举-熄灯问题
- 算法学习之枚举--熄灯问题POJ1222EXTENDED LIGHTS OUT
- 枚举-讨厌的青蛙(算法基础 第2周)
- 枚举——熄灯问题
- 三方登录和分享 的坑
- C 结构和其他数据形式
- 8张图理解Java
- Ubuntu 14.04 或者16.04开启root账户登录和图形界面登录root时候的报错解决方法
- 生活的压力即将到来,我终于要踏出安全区
- 枚举-熄灯问题(算法基础 第2周)
- 面试感悟:3年工作经验程序员应有的技能
- 关于 List 里自定义对象的排序
- 音乐间谍 v3.2
- android控件 ToggleButton-开关开灯关灯
- http://www.cnblogs.com/Ewin/archive/2009/10/05/1578322.html
- cocoa pods的安装带ruby环境搭配流程(Mac版)
- github最好的入门教程
- instanceof