40分求助
查看原帖
40分求助
379114
Kerman0411楼主2022/9/30 21:09
#include<bits/stdc++.h>
using namespace std;
const int maxn=25;
int val[maxn],l[maxn][maxn],f[maxn],g[maxn];
int a[maxn];
int n,ind;
int main(){
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>val[i];
	}
	for(int i=1;i<n;++i){
		for(int j=1;j<=n-i;++j){
			cin>>l[i][j];
		}
	}
	f[1]=val[1];
	int ans=-1e9;
	for(int i=1;i<=n;++i){
		g[i]=0;
		for(int j=1;j<i;++j){
			if(l[j][i-j]){
				if(f[j]+val[i]>f[i]){
					f[i]=f[j]+val[i];
					g[i]=j;
				}
			}
		}
		if(f[i]>ans){
			ans=f[i];
			ind=i;
		}
	}
	int cnt=1;
	for(int i=ind;g[i];i=g[i]){
		a[cnt++]=i;
	}
	cout<<1<<' ';
	for(int i=cnt-1;i>=1;--i){
		cout<<a[i]<<' ';
	}
	cout<<'\n';
	cout<<ans;
	return 0;
}

2022/9/30 21:09
加载中...