这个题用dp做怎么输出路径a
查看原帖
这个题用dp做怎么输出路径a
152990
BettyWSY楼主2021/7/21 15:33
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

int n,lei[25],pos[25],f[25],maxi;
bool mapp[25][25];

void input();
void dp();
void output();

int main(){
	memset( mapp, false, sizeof(mapp) );
	input();
	dp();
	output();
	return 0;
}

void input(){
	scanf("%d",&n);
	for( int i=1; i<=n; i++ ){
		scanf("%d",&lei[i]);
		f[i]=lei[i];
	}
	int flag;
	for( int i=1; i<n; i++ )
		for( int j=i+1; j<=n; j++ ){
			scanf("%d",&flag);
			if( flag ) mapp[i][j]=true;
		}
	return;
}
void dp(){
	for( int i=n; i>0; i-- )
		for( int j=i-1; j>0; j-- )
			if( mapp[j][i] ){
				f[j]=max( f[j], f[i]+lei[j] );
				if( f[j]>f[maxi] ){
					maxi=j;
				}
			}
	return;
}
void output(){
	printf("%d\n",f[maxi]);
	return;
}

orz

2021/7/21 15:33
加载中...