1. 程式人生 > >04-04排列問題_奇怪的比賽

04-04排列問題_奇怪的比賽

pri false ipp san con ron print 必須 popu

奇怪的比賽

某電視臺舉辦了低碳生活大獎賽。

題目的計分規則相當奇怪:

每位選手須要回答10個問題(其編號為1到10)。越後面越有難度。答對的。當前分數翻倍;答錯了則扣掉與題號同樣的分數(選手必須回答問題,不回答按錯誤處理)。

每位選手都有一個起步的分數為10分。

某獲勝選手終於得分剛好是100分,假設不讓你看比賽過程。你能判斷出他(她)哪個題目答對了,哪個題目答錯了嗎?

假設把答對的記為1。答錯的記為0,則10個題目的回答情況能夠用僅含有1和0的串來表示。

比如:0010110011 就是可能的情況。

你的任務是算出全部可能情況。

每一個答案占一行。

public class MyA
{
	// 當前分數=score, 正要回答k號題目
	static void f(int score, boolean[] buf, int k)
	{
		if(k==11){
			if(score==100){
				for(int i=1; i<buf.length; i++) System.out.print(buf[i]? 1 : 0);
				System.out.println();
			}
			return;
		}
		buf[k] = true; // 如果答對了
		f(score * 2, buf, k+1);  
		buf[k] = false; // 答錯了
		f(score - k, buf, k+1);  
	}
	
	public static void main(String[] args)
	{
		boolean[] buf = new boolean[11];  //第0號不用,題號從1開始
		f(10,buf,1);
	}
}

04-04排列問題_奇怪的比賽