《挑战程序设计竞赛》例题:抽签(初级篇)

题意大概是:有一个人去一个含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;
}
全部评论

相关推荐

shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务