0分求助 思路是递归+dp
查看原帖
0分求助 思路是递归+dp
606697
Phoebe_n楼主2022/1/26 15:04
#include<bits/stdc++.h>
using namespace std;
int n,a[30],p[30],mp[30][30],f[30],maxn,maxi;
void gcd(int x){
	if(!x){
		return ;
	}
    gcd(p[x]);
	cout<<x<<" ";
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		f[i]=a[i];
	}
	for(int i=1;i<n;i++){
		for(int j=i+1;j<=n;j++){
			cin>>mp[i][j];
		}
	}
	for(int i=1;i<n;i++){
		for(int j=1;j<i;j++){
		if(mp[j][i])
        if(f[i]<f[j]+a[i]){
        	f[i]=f[j]+a[i];
         p[i]=j;
		}
	}
    if(maxn<f[i]){
    maxn=f[i];maxi=i;
}
}
	gcd(maxi);
	cout<<maxn;
	return 0;
}
2022/1/26 15:04
加载中...