蓝桥杯 算法提高 开灯游戏

来源:互联网 发布:订单号生成算法 编辑:程序博客网 时间:2024/06/04 23:28

回溯加判断,注意在改变灯的状态的时候要用引用,要不然灯的值不会发生改变

然后在每次判断输出完之后要清空一下灯的状态否则会出错


#include <iostream>#include <memory.h>using namespace std;int k[10];int d[10];void change(int &i){  //使用引用,改变灯的状态if(i==0)i=1;else if(i==1)i=0;}void judge(){for(int i=1;i<=9;i++){if(k[i]==1){if(i==1){change(d[2]);change(d[4]);}else if(i==2){change(d[1]);change(d[3]);change(d[5]);}else if(i==3){change(d[2]);change(d[6]);}else if(i==4){change(d[1]);change(d[5]);change(d[7]);}else if(i==5){change(d[2]);change(d[4]);change(d[6]);change(d[8]);}else if(i==6){change(d[3]);change(d[5]);change(d[9]);}else if(i==7){change(d[4]);change(d[8]);}else if(i==8){change(d[5]);change(d[7]);change(d[9]);}else if(i==9){change(d[6]);change(d[8]);}}}int sum=0;for(int i=1;i<=9;i++){if(d[i])sum++;}int flag=0;if(sum==4){flag=1;for(int i=1;i<=9;i++)cout<<k[i];}if(flag)cout<<endl;}void dfs(int s){if(s==10){judge();memset(d,0,sizeof(d));  //将灯全部关闭使得下一次进行判断时不会出错return ;}for(int i=0;i<2;i++){k[s]=i;dfs(s+1);}}int main(){memset(k,0,sizeof(k));memset(d,0,sizeof(d));dfs(1);return 0; } 


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 免费的字体 电脑字体 ttf字体下载 硬笔字体 字体分类 字体库大全 在线字体 ps字体下载 炫酷字体 字体图 花式字体 正楷字体 汉仪字体 美术字体 娃娃字体 字体精灵 新疆字体 有哪些字体 字体更换 的字体 找字体软件 花样字体 ttf字体包 文字字体 怎么换字体 字体查询 字体美化 字体文件 海报字体 字体类型 ttf字体 字体怎么换 找字体网 非主流字体 文艺字体 字体ttf 古代字体 字体吧 字体设计图 求字体 女生字体