2012年第三屆藍橋杯C/C++程式設計本科B組省賽 奇怪的比賽(結果填空)

一名路過的小碼農啊發表於2017-04-01

奇怪的比賽  
某電視臺舉辦了低碳生活大獎賽。題目的計分規則相當奇怪:
每位選手需要回答10個問題(其編號為1到10),越後面越有難度。答對的,當前分數翻倍;答錯了則扣掉與題號相同的分數(選手必須回答問題,不回答按錯誤處理)。
每位選手都有一個起步的分數為10分。
某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能推斷出他(她)哪個題目答對了,哪個題目答錯了嗎?
如果把答對的記為1,答錯的記為0,則10個題目的回答情況可以用僅含有1和0的串來表示。例如:0010110011 就是可能的情況。
你的任務是算出所有可能情況。每個答案佔一行。
思路:深搜


答案:0010110011
           0111010000
           1011010000

#include<iostream>
#include<cstdio>
using namespace std;
int ans[100];
void dfs(int t,int score)
{
	if(score==100&&t>10)
	{
		for(int i=1;i<=10;i++)
		{
			printf("%d",ans[i]);
		}
		cout<<endl;
		return;
	}
	if(t>10)return;
    ans[t]=1; 
	dfs(t+1,score*2);
	ans[t]=0;
	dfs(t+1,score-t); 
}
int main()
{
	dfs(1,10);
	return 0;
} 

相關文章