有乙個由按鈕組成的矩陣, 其中每行有6個按鈕, 共5行
– 每個按鈕的位置上有一盞燈
– 當按下乙個按鈕後, 該按鈕以及周圍位置(上邊, 下邊,
左邊, 右邊)的燈都會改變狀態
26熄燈問題 poj1222
– 如果燈原來是點亮的, 就會被熄滅
– 如果燈原來是熄滅的, 則會被點亮
• 在矩陣角上的按鈕改變3盞燈的狀態
• 在矩陣邊上的按鈕改變4盞燈的狀態
• 其他的按鈕改變5盞燈的狀態
27熄燈問題 poj1222
與一盞燈毗鄰的多個按鈕被按下時,乙個操作會抵消另一次操
作的結果
給定矩陣中每盞燈的初始狀態,求一種按按鈕方案,使得所有
的燈都熄滅熄燈問題 poj1222
輸入:
– 第一行是乙個正整數n, 表示需要解決的案例數
– 每個案例由5行組成, 每一行包括6個數字
– 這些數字以空格隔開, 可以是0或1
– 0 表示燈的初始狀態是熄滅的
– 1 表示燈的初始狀態是點亮的
29熄燈問題 poj1222
輸出:
– 對每個案例, 首先輸出一行,
輸出字串 「puzzle #m」, 其中m是該案例的序號
– 接著按照該案例的輸入格式輸出5行
• 1 表示需要把對應的按鈕按下
• 0 表示不需要按對應的按鈕
• 每個數字以乙個空格隔開
**如下:
#include #includeusing
namespace
std;
char oright[5
];char light[5
];char result[5
];void setchar(char & t,int j,int
s);void output(char *t);
int getchar(char t,int
j);void flip(char & s,int
i);int
main()
}for(int i=0;i<64;i++)
}if(j<4
) light[j+1]^=switches;
switches=light[j];
}if(light[4]==0
)
}return0;
}void flip(char & s,int
i)int getchar(char t,int
j)void setchar(char & t,int j,int
s)void output(char *t)
cout
<}
}
熄燈問題 學習筆記
就是當第一行開關按下後燈狀態確定,向下逐行可以有乙個確定的開關狀態使得上一行的燈一定全部熄滅,直到最後一行檢查是否也全部熄滅,如果是則得到結果。這裡只需要列舉第一行所有開關的狀態即可,更巧妙的是可以採用二進位制位運算節省空間。include include include using namespa...
C 基礎演算法學習 猜假幣
有12枚硬幣。其中有11枚真幣和1枚假幣。假幣和真 幣重量不同,但不知道假幣比真幣輕還是重。現在,用一架天平稱了這些幣三次,告訴你稱的結果,請你 找出假幣並且確定假幣是輕是重 資料保證一定能找 出來 例題 poj1013 稱硬幣 輸入 第一行是測試資料組數。每組資料有三行,每行表示一次稱量的結果。銀...
C 基礎演算法學習 生理週期
人有體力 情商 智商的高峰日子,它們分別每隔 23天 28天和33天出現一次。對於每個人,我們想 知道何時三個高峰落在同一天。給定三個高峰出現 的日子p,e和i 不一定是第一次高峰出現的日子 再給定另乙個指定的日子d,你的任務是輸出日子d 之後,下一次三個高峰落在同一天的日子 用距離d 的天數表示 ...