诺er~ 2021-08-22 16:20 采纳率: 66.7%
浏览 106
已结题

抽签c++(求思路不要代码)

网上找不到的一道题求帮忙看看哪错了?或思路?
(话说这还是我刚学不久的附加题,现在还不会做)

抽签
Description
你的朋友提议玩一游戏:将写有数字的n个纸片放入口袋中,你可以从口袋中抽取4次纸片,每次记下纸片上的数字后都将其放回口袋中。如果这4个数字的和是m,就是你赢,否则就是你的朋友赢。你挑战了好几回,结果一次也没有赢过,于是怒而撕破口袋,取出所有纸片,检查自己是否真的有赢的可能性。
请你编写一个程序,判断当纸片上所写的数字是k1,k2,……,kn时,是否存在抽取4次和为m的方案。如果存在,输出YES; 否则,输出NO。
限制条件:
1<=n<=50
1<=m<=108
1<=ki<=108
Input
第一行为n,m,中间用一空格隔开;
接下来的第二行为n个整数k1,k2,……,kn,中间用一空格隔开。
Output
一行,输出YES或NO。
Sample Input
[输入样例1]
3 10
1 3 5
[输入样例2]
3 9
1 3 5
Sample Output
[输出样例1]
YES
[输出样例2]
NO


#include<bits/stdc++.h>
using namespace std;
int want,sum,n;
bool fp,fw;
int a[11451];
void dfs(int tim,int s)
{
    if(fp) return;
    if(tim>4)
    {
        if(s>=sum)
        {
            if(s==sum) fp=1;
            //else fw=1;
            return;
        }
    }
    for(int i=1;i<=n;i++)
    {
        //if(fw) break;
        dfs(tim+1,s+a[i]);
    }
    //fw=0;
}
int main()
{
    cin>>n>>want;
    for(int i=1;i<=n;i++) cin>>a[i];
    dfs(1,0);
    if(fp) 
    {
        cout<<"YES";
        return 0;
    }
    cout<<"NO";
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 六年级初中生 2021-08-22 16:25
    关注

    为什么第10行是大于四?
    你的sum没赋值啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助