所以我这个深搜还有救吗
查看原帖
所以我这个深搜还有救吗
360140
QWXSDL楼主2023/10/15 13:33
using namespace std;
int n,m,k;
int a[60][60],b[60][60],c[60][60],f[60][60];
int ax[3]={0,1,0};
int by[3]={0,0,1};
void dfs(int x,int y,int c1,int c2){
    if(k<0||c1<0||c2<0)return;
    if(k==0&&c1==0&&c2==0){
        c[x][y]++;
        return ;
    }
    int ac=k/a[x][y];
    int bc=k/b[x][y];
    for(int i=0;i<=ac;i++){
        for(int j=0;j<=bc;j++){
            if(i*a[x][y]+j*b[x][y]<=k){
                k=k-i*a[x][y]-j*b[x][y];
                c1=c1+i;
                c2=c2+j;
                if(x+1<=n&&c1>=1)dfs(x+1,y,c1-1,c2);
                if(y+1<=m&&c2>=1)dfs(x,y+1,c1,c2-1);
                k=k+i*a[x][y]+j*b[x][y];
                c1-=i;
                c2-=j;
            }
        }
    }
    return;
}
int main(){
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>b[i][j];
        }
    }
    dfs(1,1,0,0);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cout<<c[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}```
2023/10/15 13:33
加载中...