蓝桥杯 算法提高 开灯游戏
来源:互联网 发布:基站数据库下载 编辑:程序博客网 时间:2024/06/05 10:27
算法提高 开灯游戏
时间限制:1.0s 内存限制:256.0MB
问题描述
有9盏灯与9个开关,编号都是1~9。
每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。
具体如下:
第一个开关控制第二,第四盏灯;
第二个开关控制第一,第三,第五盏灯;
第三个开关控制第二,第六盏灯;
第四个开关控制第一,第五,第七盏灯;
第五个开关控制第二,第四,第六,第八盏灯;
第六个开关控制第三,第五,第九盏灯;
第七个开关控制第四,第八盏灯;
第八个开关控制第五,第七,第九盏灯;
第九个开关控制第六,第八盏灯。
开始时所有灯都是熄灭的,开关是关闭着的。要求按下若干开关后,使得只有4盏灯亮着。
每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。
具体如下:
第一个开关控制第二,第四盏灯;
第二个开关控制第一,第三,第五盏灯;
第三个开关控制第二,第六盏灯;
第四个开关控制第一,第五,第七盏灯;
第五个开关控制第二,第四,第六,第八盏灯;
第六个开关控制第三,第五,第九盏灯;
第七个开关控制第四,第八盏灯;
第八个开关控制第五,第七,第九盏灯;
第九个开关控制第六,第八盏灯。
开始时所有灯都是熄灭的,开关是关闭着的。要求按下若干开关后,使得只有4盏灯亮着。
输出格式
输出所有可能的方案,每行一个方案,每一行有9个字符,从左往右第i个字符表示第i个开关的状态("0"表示关闭,"1"表示打开),按字典序输出。下面的样例输出只是部分方案。
样例输出
000001011
000001110
000001111
000001110
000001111
#include<iostream>#include<string> #include<algorithm>using namespace std;int b[11];string s[100001]="";int main(){int a1,a2,a3,a4,a5,a6,a7,a8,a9,i,j,k=0;for(a1=0;a1<=1;a1++){for(a2=0;a2<=1;a2++){for(a3=0;a3<=1;a3++){for(a4=0;a4<=1;a4++){for(a5=0;a5<=1;a5++){for(a6=0;a6<=1;a6++){for(a7=0;a7<=1;a7++){for(a8=0;a8<=1;a8++){for(a9=0;a9<=1;a9++){//for(i=0;i<10;i++)//b[i]=0;fill(b,b+10,0);if(a1==0){b[2]=b[2];b[4]=b[4];}if(a1==1){b[2]=1-b[2];b[4]=1-b[4];}if(a2==0){b[1]=b[1];b[3]=b[3];b[5]=b[5];}if(a2==1){b[1]=1-b[1];b[3]=1-b[3];b[5]=1-b[5];}if(a3==0){b[2]=b[2];b[6]=b[6];}if(a3==1){b[2]=1-b[2];b[6]=1-b[6];}if(a4==0){b[1]=b[1];b[5]=b[5];b[7]=b[7];}if(a4==1){b[1]=1-b[1];b[5]=1-b[5];b[7]=1-b[7];}if(a5==0){b[2]=b[2];b[4]=b[4];b[6]=b[6];b[8]=b[8];}if(a5==1){b[2]=1-b[2];b[4]=1-b[4];b[6]=1-b[6];b[8]=1-b[8];}if(a6==0){b[3]=b[3];b[5]=b[5];b[9]=b[9];}if(a6==1){b[3]=1-b[3];b[5]=1-b[5];b[9]=1-b[9];}if(a7==0){b[4]=b[4];b[8]=b[8];}if(a7==1){b[4]=1-b[4];b[8]=1-b[8];}if(a8==0){b[5]=b[5];b[7]=b[7];b[9]=b[9];}if(a8==1){b[5]=1-b[5];b[7]=1-b[7];b[9]=1-b[9];}if(a9==0){b[6]=b[6];b[8]=b[8];}if(a9==1){b[6]=1-b[6];b[8]=1-b[8];}int ans=0;for(i=1;i<=9;i++){if(b[i]==1)ans++;}if(ans==4){s[k]=(a1+'0');s[k]+=(a2+'0');s[k]+=(a3+'0');s[k]+=(a4+'0');s[k]+=(a5+'0');s[k]+=(a6+'0');s[k]+=(a7+'0');s[k]+=(a8+'0');s[k]+=(a9+'0');k++;}}}}}}}}}}//cout <<k<<endl;for(i=0;i<k;i++){cout <<s[i]<<endl;}return 0;}
阅读全文
0 0
- 蓝桥杯 算法提高 开灯游戏
- 蓝桥杯 算法提高 开灯游戏
- 算法提高 开灯游戏
- 算法提高 开灯游戏
- 蓝桥杯训练:开灯游戏
- UI 开灯游戏
- 算法篇-开灯问题
- 算法入门开灯问题
- 算法题-开灯问题
- 蓝桥杯 算法提高 盾神与积木游戏
- 算法研究之开灯问题
- 算法研究之开灯问题
- 算法研究之开灯问题
- 算法谜题106 开灯
- 算法入门经典:开灯问题
- 算法提高 盾神与积木游戏
- 算法提高 盾神与积木游戏
- 算法提高 盾神与积木游戏
- JAVA架构师面试题,如何成为架构师
- CSS3渐变色利器
- Mapper中<ResultMap>标签的使用
- vue.js的安装部署+cnpm install 安装过程卡住不动----亲测可用
- React入门狂想曲(二)-JSX语法
- 蓝桥杯 算法提高 开灯游戏
- 编程中位运算用法总结
- adb 无线连接
- 谈一谈 蓝牙防丢器
- 关于应用的全局统一异常处理
- 不要重新定义继承而来的缺省参数值
- (转)Android 中 CheckBox 的 setOnClickListener 和 setOnCheckedChangeListener 的不同之处在哪?
- 在1到30之间产生7个不重复的随机数,然后从小到大排序,若产生的数只有个位,则在个位前添加0,如01
- 什么是SEM和SEO