某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪:
每位選手需要回答10個問題(其編號為1到10),越後面越有難度。答對的,當前分數翻倍;答錯了則扣掉與題號相同的分數(選手必須回答問題,不回答按錯誤處理)。
每位選手都有乙個起步的分數為10分。
某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能推斷出他(她)哪個題目答對了,哪個題目答錯了嗎?
如果把答對的記為1,答錯的記為0,則10個題目的回答情況可以用僅含有1和0的串來表示。例如:0010110011 就是可能的情況。
你的任務是算出所有可能情況。每個答案佔一行。
看似簡單,其實10層迴圈寫起來麻煩的乙個題……
所以這題就體現出了遞迴的妙處。
1 #include2 #include3 #include45int score(int *a)//
把複雜問題用乙個個函式分解的如此簡單614
else
1518}19
if(s==100)//
最終得分是100
20return1;
21else
22return0;
23}2425
void show(int *a)//
條理清晰
2632 printf("\n"
);33}34
35void sovle(int *a,int n)//
遞迴的妙用
3643
return;//
只要回答完10道題在這都要return,因為sovle函式是乙個遞迴函式44}
45 a[n]=1;//
第一題回答正確
46 sovle(a,n+1);//
遞迴進入第二題
47 a[n]=0;//
返回後再看第一題錯誤的情況
48 sovle(a,n+1);//
在進行遞迴49}
5051
intmain()
52
奇怪的比賽 藍橋杯
這是2012年藍橋杯全國軟體大賽預賽 c 本科組 的第4題,情景是乙個計分規則奇怪的比賽,問題是已知總分得到每題的回答情況。某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須...
奇怪的比賽 藍橋杯
這是2012年藍橋杯全國軟體大賽預賽 c 本科組 的第4題,情景是乙個計分規則奇怪的比賽,問題是已知總分得到每題的回答情況。某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須...
藍橋杯 奇怪的比賽
某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須回答問題,不回答按錯誤處理 每位選手都有乙個起步的分數為10分。某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能...