納品書

本質的な問題は、左上から2ジンの右下隅、最大重量に独立経路であります

1--動的プログラミング(IIプロセス動的プログラミング)コストフローチャートまたはグリッド

良好な状態を決定するためにそれを転送

 

 

書式#include <iostreamの>
書式#include <CStringの>
書式#include <アルゴリズム>
書式#include <cstdioを>
#define MAXN 60 
名前空間stdを使用。
int型DP [MAXN * 2] [MAXN] [MAXN]。
int型マップ[MAXN] [MAXN]。
整数N、M。

INTメイン(){
	scanf関数( "%D%D"、&N、&M)。
	以下のために(INT I 1 =; I <= N; I ++){
		{(J ++; J <= M INT J = 1)のために
			scanf関数( "%d個"、&マップ[I] [J])。
		}
	}
	以下のために(INT I 2 =; I <= N + M; I ++){
		(INT X = MAX(1、I  -  M); X <= N && X <I; X ++)のために{
			{ - のために(Y ++; Y <= N && Y <I M)のint Y = MAX(1、I)

				INT T =マップ[Y] [I  -  Y]。
				T + =マップ[X] [I  -  X]。

				IF(X!= Y || I == 2 || I == N + M){
					DP [I] [X] [Y] =(DP [I] [X] [Y]、DP [I-1] [X] [Y] + T)MAX。
					DP [I] [X] [Y] = MAX(DP [I] [X] [Y]、DP [I  -  1] [X  -  1] [Y] + T)。
					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x][y - 1] + t);
					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x - 1][y - 1] + t);
				}
			}
		}
	}
	printf("%d\n", dp[m + n][n][n]);
	return 0;
}

  

おすすめ

転載: www.cnblogs.com/lesning/p/11988522.html