《挑战程序设计竞赛》例题:抽签(初级篇)
题意大概是:有一个人去一个含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;
}


