POJ 1222
来源:互联网 发布:科技感html页面源码 编辑:程序博客网 时间:2024/05/02 20:18
熄灯问题
几个TIPS
1、只要有第一行的初始状态和第一行是否按灯的情况就能确定下面所有行的按灯情况。因为上面的灯亮着,对应位置的下面的开关就必须点一下,反之则不能点。
2、将5*6 的矩阵扩充为6*8的矩阵,使每个开关的情况变成一样。
3、6重循环用伪二进制进位的方法看起来更符合逻辑一些。
#include<iostream>#include <stdio.h>using namespace std;int puzzle[6][8],press[6][8];bool guess(){int c,r;for (r=1;r<5;r++){for (c=1;c<7;c++){press[r+1][c]=(puzzle[r][c]+press[r][c-1]+press[r][c]+press[r][c+1]+press[r-1][c])%2;}}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;}void enumerate(){int c;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=1;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();cout<<"PUZZLE #"<<i+1<<endl;for(r=1;r<6;r++){for(c=1;c<7;c++)cout<<press[r][c]<<" ";cout<<endl;}}return 0;}
0 0
- poj 1222
- POJ 1222
- POJ 1222
- poj 1222
- 【POJ】1222
- 开关问题 POJ 3276 POJ 3279 POJ 1222
- zoj 1354 poj 1222
- POJ 1222 熄灯游戏
- poj 1222(高斯消元法求解。。。。)
- poj 1222 解题报告
- POJ 1222 高斯消元法
- POJ 1222 解题报告
- POJ 1222 熄灯问题
- poj 1222 (高斯消元)
- POJ 1222 高斯消元法
- POJ 1222 高斯消元
- poj 1222 高斯消元
- poj 1222 高斯消元详解
- rac安装_grid安装校验报错之grid未建立信任关系
- GitHub for windows 环境配置
- 【C】矩阵翻转(上下翻转、左右翻转)
- LIS
- javaweb-servlet重定向与转发的区别及案例
- POJ 1222
- 解决python编码问题(一)
- Java虚拟机与程序的生命周期
- CUDA测试设备属性的代码
- GCD的使用
- Hadoop Streaming for Python
- 拓扑排序
- 要么滚,要么拼命
- 读取.mat文件