1362. 健康的荷斯坦奶牛

暴搜水题~ 。

const int N=30;
int need[N];
int feed[20][N];
int res[N];
vector<int> path,ans;
int n,m;

bool check()
{
    for(int i=1;i<=n;i++)
        if(res[i] < need[i])
            return false;
    return true;
}

void dfs(int u,vector<int> &path)
{
    if(u > m)
    {
        if(check())
        {
            if(ans.size() == 0 || path.size() < ans.size() || (ans.size() == path.size() && path < ans))
                ans=path;
        }
        return;
    }

    for(int i=1;i<=n;i++) res[i]+=feed[u][i];
    path.push_back(u);
    dfs(u+1,path);
    path.pop_back();
    for(int i=1;i<=n;i++) res[i]-=feed[u][i];
    dfs(u+1,path);
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>need[i];

    cin>>m;
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            cin>>feed[i][j];

    dfs(1,path);

    cout<<ans.size();
    for(int i=0;i<ans.size();i++)
        cout<<' '<<ans[i];
    cout<<endl;
    //system("pause");
    return 0;
}
posted @ 2021-05-31 10:02  Dazzling!  阅读(17)  评论(0编辑  收藏  举报