LQ 奇怪的比賽

2021-06-29 16:30:53 字數 1251 閱讀 4384



奇怪的比賽

這是2012

年藍橋杯全國軟體大賽預賽(

c++本科組)的第

4題,情景是乙個計分規則奇怪的比賽,問題是已知總分得到每題的回答情況。

某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪:

每位選手需要回答

10個問題(其編號為1到

10),越後面越有難度。答對的,當前分數翻倍;答錯了則扣掉與題號相同的分數(選手必須回答問題,不回答按錯誤處理)。

每位選手都有乙個起步的分數為

10分。

某獲勝選手最終得分剛好是

100分,如果不讓你看比賽過程,你能推斷出他(她)哪個題目答對了,哪個題目答錯了嗎?

如果把答對的記為

1,答錯的記為0,則

10個題目的回答情況可以用僅含有1和

0的串來表示。例如:

0010110011 

就是可能的情況。

你的任務是算出所有可能情況。每個答案佔一行。

答案寫在「解答

.txt」

中,不要寫在這裡!

解法一:遞迴

#include

#include

using namespace std;

int a[11];

void dfs(int i,int sum)

return ; }

a[i]=0;

dfs(i+1,sum-i);

a[i]=1;

dfs(i+1,sum*2);

} int main()

解法二:遞迴

#include 

using namespace std;

bool b[11];

void f(int n)

if(sum==100) 

return;       }

b[n]=0;//假設該題答錯 

f(n+1); //繼續答後續題目 

b[n]=1;//假設該題答錯 

f(n+1);   //繼續答後續題目  }

int main()  

解法三:

列舉0到1023

#include

#include

#include

int a[10];

void find(int x)

} int main()

if(n==100)

find(i++); }

}

奇怪的比賽

某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須回答問題,不回答按錯誤處理 每位選手都有乙個起步的分數為10分。某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能...

奇怪的比賽

include include include include include includeusing namespace std const int target 100 int globalcnt 0 int cnt 11 int next int id,int cur 開始答第id道題 in...

奇怪的比賽

某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須回答問題,不回答按錯誤處理 每位選手都有乙個起步的分數為10分。某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能...