1 条题解

  • 0
    @ 2021-11-07 16:47:29

    #include<bits/stdc++.h>
    using namespace std;
    int ans[10000],n,c;
    bool v[10000];
    bool dfs(int n)
    {
    int p=0,sum=0;
    while(p>=0)
    {
    if(!v[p])
    {
    v[p]=1;
    sum=sum+ans[p];
    if(c==sum) return 1;
    else if(c<sum)
    {
    v[p]=0;
    sum=sum-ans[p];
    }
    p++;
    }
    if(p>n)
    {
    while(v[p-1])
    {
    p--;
    v[p]=0;
    if(p<1) return 0;
    }
    while(!v[p-1])
    {
    p--;
    if(p<1)
    {
    return 0;
    }
    }
    sum=sum-ans[p-1];
    v[p-1]=0;
    }
    }
    return 0;
    }
    int main()
    {
    cin>>n>>c;
    for(int i=0;i<n;i++)
    {
    cin>>ans[i];
    }
    if(dfs(n))
    {
    int k=1;
    for(int i=0;i<n;i++)
    {
    if(v[i])
    {
    if(k)
    {
    k=0;
    }
    else
    {
    cout<<" ";
    }
    cout<<ans[i];
    }
    }
    }
    else
    cout<<"No Solution!";
    return 0;
    }

  • 1

信息

难度
7
分类
(无)
标签
递交数
60
已通过
13
通过率
22%
上传者