《挑战程序设计竞赛》例题:抽签(初级篇)
题意大概是:有一个人去一个含n张纸的口袋抽4次(每次后放回),问可不可能抽到所有纸上数字之和为m,每张纸上数字为ki
直接可以暴力解题,因为这题数据范围不是很大,1=<n<=50,也就是o( )(应该是这样算的吧。。)远没达到
以下是代码:
#include <bits/stdc++.h> using namespace std; int main() { int n,m,sign=0;//n为口袋中纸的数目,m是要求的和,ki为某张纸上的数字 cin>>n>>m; int a[n];//数组a为储存纸上数字的数组 for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<n;i++) { for(int x=0;x<n;x++) { for(int y=0;y<n;y++) { for(int z=0;z<n;z++) { if(a[i]+a[x]+a[y]+a[z]==m) { sign=1;//做个标记证明他们的和可以为m cout<<"yes"<<endl; return 0;//保证只输出一个yes,否则后面也可能出现符合的组合 } } } } } if(sign==0)cout<<"no"<<endl; }