抽籤問題:ios
你的朋友提議玩一個遊戲:將寫有數字的n個紙片放入口袋中,你能夠從口袋中抽取4次紙片,每次記下紙片上的數字後都將其放回口袋中。若是這4個數字的和是m,就是你贏,不然就是你的朋友贏。c++
請你編寫一個程序,判斷當紙片上所寫的數字是k1,k2,... ,kn時,是否存在抽取4次和爲m的方案。若是存在,輸出爲Yes;不然,輸出爲No。算法
限制條件:spa
1<=n<=50code
1<=m<=10^8blog
1<=ki<=10^8遊戲
樣例輸入io
3 10class
1 3 5stream
第一行表明n,m,第二行表明ki
樣例輸出:
Yes
此問題屬於簡單的算法分析題,很容易得出結論;
代碼以下:
1 #include <iostream> 2 #include <stdio.h> 3 4 using namespace std; 5 const int MAX=50; 6 7 int main() 8 { 9 int i,n,m,k[MAX]; 10 scanf("%d %d",&n,&m); 11 for(i=0;i<n;i++) 12 { 13 scanf("%d",&k[i]);; 14 } 15 int flat=0; 16 for(int a=0;a<n;a++) 17 for(int b=0;b<n;b++) 18 for(int c=0;c<n;c++) 19 for(int d;d<n;d++) 20 { 21 if(k[a]+k[b]+k[c]+k[d]==m) 22 flat=1; 23 } 24 if(flat==0) 25 printf("YES"); 26 else 27 printf("NO"); 28 return 0; 29 }