挑戰程式設計 抽籤

2021-06-29 03:05:34 字數 743 閱讀 5577

你的朋友提議玩乙個遊戲,將寫有數字的n個紙片放入口袋中,你可以從口袋中抽取4次紙片,每次記下紙片數字後將其放回口袋中。如果這四個數字的和是m,就是你贏,否則的話就是你朋友贏,你挑戰了好幾回,結果一次也沒有贏過,於是怒而撕破口袋,取出所有紙片,檢查自己是否有贏的可能性。請你編寫乙個乙個程式,判斷紙片上所寫的數字是a1,a2,a3,,,,an,是否存在抽取和為m的方案,如果存在,輸出yes,否則的話,輸出no。

限制條件

1<=n<=50

1<=m<=100000000

1樣例1:

輸入:n=3

m=10

a=輸出:

yes樣例二:

輸入:n=3

m=9a=

輸出:no

分析:如果n的值為50,四層迴圈的時間的複雜度還不是很大,如果n=1000四層迴圈就會超時,所以有第二種和第三種方法,用的是二分查詢法

第一種方法:

#include#include#includeusing namespace std;

int main()

}int main()

}int main()

sort(b,b+count);

for(int i=0;ifor(int j=0;jif(flag)

printf("yes\n");

else

printf("no\n");

}return 0;

}

ACM挑戰程式設計競賽1 1抽籤

試題描述 你的朋友提議玩乙個遊戲 將寫有數字的n 個紙片放入口袋中,你可以從口袋中抽取4 次紙片,每次記下紙片上的數字後都將其放回口袋中。如果這4 個數字的和是m,就是你贏,否則就是你的朋友贏。你挑戰了好幾回,結果一次也沒贏過,於是怒而撕破口袋,取出所有紙片,檢查自己是否真的有贏的可能性。請你編寫乙...

ACM挑戰程式設計競賽1 1抽籤

試題描述 你的朋友提議玩乙個遊戲 將寫有數字的n 個紙片放入口袋中,你可以從口袋中抽取4 次紙片,每次記下紙片上的數字後都將其放回口袋中。如果這4 個數字的和是m,就是你贏,否則就是你的朋友贏。你挑戰了好幾回,結果一次也沒贏過,於是怒而撕破口袋,取出所有紙片,檢查自己是否真的有贏的可能性。請你編寫乙...

挑戰程式設計競賽 1 63抽籤加強版

有n個數字,每次選乙個數,每個數可用無限次,選4次,問加起來能否等於m.能輸出yes,否則輸出no.1 n 1000 樸素演算法就是列舉複雜度o n 4 死定了。這樣複雜度就是o nlogn 2 include include include include define max a,b a b a...