int light[9][7]={ 0,0,0,0,0,0,0, 0,0,0,0,0,0,0,//按1 0,0,0,1,1,1,0,//按1按4 0,0,1,0,1,0,1,//按3 0,0,1,1,0,1,1,//按1按4 0,1,0,0,1,0,0,//按4 0,1,0,1,0,1,0,//按2 0,1,1,0,0,0,1,//按2按4 0,1,1,1,1,1,1,//不按 };//常量表 int minnum[9]={0,1,2,1,1,2,1,2,0};//对应常量表8个状态最少摁的次数4.然后就可以开始写代码了,嘿嘿
flag1=false; for(i=1;i<9;i++) { flag2=true; for(j=1;j<=n;j++) { if(dat[j]==-1)//如果没有确定是亮或灭 continue; tmp=j%6;//六位循环 if(tmp==0)//如果是6的倍数 tmp=6; if(dat[j]!=light[i][tmp])//有个灯不同说明不是这个状态,结束判断 { flag2=false; break; } } if(flag2==true&&c>=minnum[i]) { flag1=true;//有一个满足条件就标记 for(j=1;j<=n;j++) { tmp=j%6; if(tmp==0) tmp=6; cout<<light[i][tmp]; } cout<<endl; } } if(flag1==false) cout<<"IMPOSSIBLE"<<endl;
原文地址:http://blog.csdn.net/mmoaay/article/details/40535533