BREEZE


私信TA

用户名:MILD

访问量:12371

签 名:

不到100不关电脑

等  级
排  名 1874
经  验 2494
参赛次数 12
文章发表 27
年  龄 16
在职情况 学生
学  校 省丹中(镇江丹阳)
专  业 高二

  自我简介:

#include<iostream>

#include<string.h>

#include<algorithm>

using namespace std;

int a[26],sum[26]={0};

int flag=0;

void dfs(int s,int k){

    if(flag==1)return;

    if(abs(s)>sum[k])return;

    if(s==0||abs(s)==sum[k]){

        flag=1;

        return;

    }

    if(k<0){

        return;

    }

    dfs(s-a[k],k-1);

    dfs(s,k-1);

    dfs(s+a[k],k-1);

    return;

}

int main()

{  

    int n,m;

    cin>>n>>m;

    for(int i=0;i<n;i++){

        cin>>a[i];

        if(i>0)sum[i]=sum[i-1]+a[i];

        else sum[0]=a[0]; 

    }

    while(m--){

        int s;

        cin>>s;

        flag=0;

        dfs(s,n-1);

        if(flag==1)cout<<"YES"<<endl;

        else cout<<"NO"<<endl;

    }

    return 0;

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区