现在的位置: 首页 > 综合 > 正文

tyvj-1045 DP

2013年07月29日 ⁄ 综合 ⁄ 共 592字 ⁄ 字号 评论关闭

DP就是划分子问题,解决子问题而后从子问题的解得到整个问题的解。其实就是分治。

/*
 * tyvj-1045
 * mike-w
 * 2011-11-6
 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max(a,b) ((a)>(b)?(a):(b))
#define SIZE 20

int num[SIZE];
int sum[SIZE][SIZE];
int opt[SIZE][SIZE];
int N,K;

int main(void)
{
#ifndef ONLINE_JUDGE
	freopen("in","r",stdin);
#endif
	int i,j,k;
	scanf("%d%d",&N,&K);
	for(i=1;i<=N;i++)
		scanf("%d",num+i);
	for(i=1;i<=N;i++)
		for(j=i;j<=N;j++)
			sum[i][j]=sum[i][j-1]+num[j];
	for(i=1;i<=N;i++)
		opt[i][0]=sum[1][i];
	for(i=2;i<=N;i++)
		for(j=1;j<=K && j<i;j++)
			for(k=1;k<i;k++)
				opt[i][j]=max(opt[i][j],opt[k][j-1]*sum[k+1][i]);
	printf("%d\n",opt[N][K]);
	return 0;
}

 

抱歉!评论已关闭.