0分求调
查看原帖
0分求调
1070431
ywtank楼主2024/10/15 21:49
#include <bits/stdc++.h>
using namespace std;
int a[100];
int dp[100][100];
int v,g;
int x[100];
int bd[100][100];
int bc[100];
int sum=0;
void dfs(int n,int pos){
    bool flag=true;
    for(int i=1;i<=v;i++){
        if(a[i]>0)flag=false;
    }
    if(flag){
        sum++;
        for(int i=1;i<=v;i++){
            bd[sum][i]=bc[i];
        }
        return;
    }
    for(int i=pos;i<=g;i++){
        for(int j=1;j<=v;j++){
            x[i]-=dp[i][j];
        }
        bc[n]=i;
        dfs(n+1,i+1);
        for(int j=1;j<=v;j++){
            x[i]+=dp[i][j];
        }
        bc[n]=0;
    }
}
int main(){
    cin >> v;
    for(int i=1;i<=v;i++)cin >> a[i],x[i]=a[i];
    cin >> g;
    for(int i=1;i<=g;i++){
        for(int j=1;j<=v;j++){
            cin >> dp[i][j];
        }
    }
    dfs(0,1);
    int id,mi=INT_MAX;
    for(int i=1;i<=sum;i++){
        int c=0;
        for(int j=1;j<=100;j++){
            if(bd[i][j]==0)break;
            c++;
        }
        if(c<mi){
            id=i;
            c=mi;
        }
    }
    for(int i=1;i<=mi;i++){
        cout << bd[id][i] << ' ';
    }
    return 0;
}

希望各位大佬帮忙看看

2024/10/15 21:49
加载中...