求助80pts
查看原帖
求助80pts
225730
QianZezhong楼主2022/11/23 19:38
#include <bits/stdc++.h>
using namespace std;
int n,m,k,c;
int a[205],b[205];
int p[205],q[205];
int xm[205],xh[205];
int dp[115][1015][115];
int main(){
	cin>>n>>m>>k>>c;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=n;i++){
		scanf("%d",&b[i]);
	}
	for(int i=1;i<=m;i++){
		scanf("%d%d",&p[i],&q[i]);
		xm[i]=a[p[i]]*a[q[i]];
		xh[i]=b[p[i]]+b[q[i]];
	}
	for(int i=0;i<=m;i++){
		for(int j=0;j<=c;j++){
			for(int q=0;q<=k;q++){
				dp[i][j][q]=-99999999;
			}
		}
	}
	dp[0][0][0]=0;
	for(int i=1;i<=m;i++){
		for(int j=0;j<=c;j++){
			for(int q=0;q<=k-1;q++){//此处 
				dp[i][min(c,j+xh[i])][q+1]=max(dp[i][min(c,j+xh[i])][q+1],dp[i-1][j][q]+xm[i]);
				dp[i][j][q]=max(dp[i][j][q],dp[i-1][j][q]);
			}
		}
	}
	if(dp[m][c][k]<=0)cout<<-1;
	else cout<<dp[m][c][k];
} 

标有“此处”这行的q<=k-1改成q<=i-1就过了,但是想不通为什么写k-1过不了,求助

2022/11/23 19:38
加载中...