日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

熄灯问题——全代码

發布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熄灯问题——全代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 #include <iostream> 2 #include <cstring> //memset(),memcpy頭文件 3 using namespace std; 4 5 //獲取第j位 6 int Getbit(int num,int j) 7 { 8 return (num >> j)&1; 9 } 10 //設置第j位 11 void Setbit(char& num,int j, int s) 12 { 13 if(s) 14 num |= (1 << j); 15 else 16 num &= ~(1 << j); 17 } 18 //反轉第j位 19 void Flipbit(char& num,int j) 20 { 21 num ^= (1 << j); 22 } 23 24 int main(int argc,char* argv[]) 25 { 26 char orilight[5];//原始燈狀態 27 char curlight[5];//當前燈的狀態 28 char result[5]; //結果 29 int switchs; //開關狀態 30 bool flag = false;//判斷是否有結果 31 32 //初始化原始燈狀態 33 memset(orilight,0,sizeof(orilight)); 34 for(int i = 0;i < 5;++i) 35 for(int j = 0;j < 6;++j) 36 { 37 int single; 38 cin >> single; 39 Setbit(orilight[i],j,single); 40 } 41 //確定結果 42 for(int n = 0;n < 64;++n) 43 { 44 switchs = n; 45 memcpy(curlight,orilight,sizeof(orilight));//每執行一次枚舉就將原始燈的狀態存到當前燈矩陣中 46 //以保證每次測試結果都不會改變原始狀態 47 //處理每一行燈的狀態 48 for(int i = 0;i < 5;++i) 49 { 50 result[i] = switchs; 51 for(int j = 0;j < 6;++j) 52 { 53 if(Getbit(switchs,j)) 54 { 55 if(j > 0) 56 Flipbit(curlight[i],j - 1); 57 Flipbit(curlight[i],j); 58 if(j < 5) 59 Flipbit(curlight[i],j+1); 60 } 61 } 62 //處理第i+1行燈的狀態 63 if(j < 4) 64 curlight[i+1] ^= switchs; 65 switchs = curlight[i]; 66 } 67 //當第五行的燈熄滅時,找到結果 68 if(curlight[4] == 0) 69 { 70 flag = true; 71 break; 72 } 73 } 74 if(flag) 75 { 76 for(int i = 0;i < 5;++i) 77 { 78 for(int j = 0;j < 6;++j) 79 { 80 cout << Getbit(result[i],j) << " "; 81 } 82 cout << endl; 83 } 84 } 85 else 86 cout << "no anwser" << endl; 87 88 return 0; 89 }

補充:對于所需要的枚舉次數,我們可以這樣計算:因為我們只需要枚舉第一行的燈的狀態,而第一行有6盞燈,所以全排列就是26種,即我們只需枚舉64次。

   ? 當然,我們也可以枚舉更少的次數,也就是只枚舉32次(25),按列來枚舉,這種方法可以考慮使用大小為6的char數組,每個數組存一列,其他過程

   ? 如按行枚舉。

轉載于:https://www.cnblogs.com/heisen/p/8933696.html

總結

以上是生活随笔為你收集整理的熄灯问题——全代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。