演算法提高 開燈遊戲
時間限制:1.0s 記憶體限制:256.0mb
問題描述
有9盞燈與9個開關,編號都是1~9。
每個開關能控制若干盞燈,按下一次會改變其控制的燈的狀態(亮的變成不亮,不亮變成亮的)。
具體如下:
第乙個開關控制第二,第四盞燈;
第二個開關控制第一,第三,第五盞燈;
第三個開關控制第二,第六盞燈;
第四個開關控制第一,第五,第七盞燈;
第五個開關控制第二,第四,第六,第八盞燈;
第六個開關控制第三,第五,第九盞燈;
第七個開關控制第四,第八盞燈;
第八個開關控制第五,第七,第九盞燈;
第九個開關控制第六,第八盞燈。
開始時所有燈都是熄滅的,開關是關閉著的。要求按下若干開關後,使得只有4盞燈亮著。
輸出格式
輸出所有可能的方案,每行乙個方案,每一行有9個字元,從左往右第i個字元表示第i個開關的狀態("0"表示關閉,"1"表示開啟),按字典序輸出。下面的樣例輸出只是部分方案。
樣例輸出
000001011
000001110
000001111
#include int light_on(int switches)
; if (switches & 1)
switches >>= 1;
if (switches & 1)
switches >>= 1;
if (switches & 1)
switches >>= 1;
if (switches & 1)
switches >>= 1;
if (switches & 1)
switches >>= 1;
if (switches & 1)
switches >>= 1;
if (switches & 1)
switches >>= 1;
if (switches & 1)
switches >>= 1;
if (switches & 1)
int num_lights_on = 0;
for (int i = 0; i < 9; ++i)
if (lights[i])
num_lights_on++;
return num_lights_on;
}void print_switch(int switches)
; for (int i = 8; i >= 0; --i)
for (int i = 0; i < 9; ++i)
printf("%d", bits[i]);
printf("\n");
}int main()
return 0;
}
藍橋杯 ADV 140 開燈遊戲
問題描述 有9盞燈與9個開關,編號都是1 9。每個開關能控制若干盞燈,按下一次會改變其控制的燈的狀態 亮的變成不亮,不亮變成亮的 具體如下 第乙個開關控制第二,第四盞燈 第二個開關控制第一,第三,第五盞燈 第三個開關控制第二,第六盞燈 第四個開關控制第一,第五,第七盞燈 第五個開關控制第二,第四,第...
藍橋杯 演算法提高 開燈遊戲
回溯加判斷,注意在改變燈的狀態的時候要用引用,要不然燈的值不會發生改變 然後在每次判斷輸出完之後要清空一下燈的狀態否則會出錯 include include using namespace std int k 10 int d 10 void change int i void judge else...
藍橋杯 演算法提高VIP 開燈遊戲
題目 1520 藍橋杯 演算法提高vip 開燈遊戲 時間限制 1sec 記憶體限制 128mb 提交 499 解決 241 題目描述 有9盞燈與9個開關,編號都是1 9。每個開關能控制若干盞燈,按下一次會改變其控制的燈的狀態 亮的變成不亮,不亮變成亮的 具體如下 第乙個開關控制第二,第四盞燈 第二個...