你的朋友提議玩乙個遊戲,將寫有數字的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...