hdu 2084 dp

2014/9/15


 连数塔都差点写不出来。

这世上只有你拥有了相应的实力,才会有相应的圈子。


//Ñô¹â´ÌÍ´Ë«íø
//gou
#include<stdio.h>
#include<string.h>
#include<cmath> 
#include<algorithm>
#include<iostream>
#include<queue>
#include<stack>
#include<map>
#include<climits>
#include<vector>

using namespace std;
typedef long long ll;  
#define f(x,y,i) for(int i = x;i < y; i++)
#define ff(x,y,i) for(int i = x;i  <= y; i++)
#define F(x,y,i) for(int i = x; i >= y; i--)
#define FF(x,y,i) for(int i = x; i > y; i++)
#define lson pos<<1,l,mid
#define rson pos<<1|1,mid+1,r
#define Min(x,y) x<y?x:y
#define Max(x,y) x>y?x:y
#define sc(n) scanf("%d",&n)
#define pr(n) printf("%d\n",n)
#define met(n,m) memset(n, m, sizeof(n)) 
#define mod 10007
const int N=150;
int s[N][N];
int n , m , d,tot ,  a , b , maxn;


void init()
{
	for(int i =0 ;i < N; i++)
	for(int j =0;j< N; j++)
	s[i][j]=0;	
}



int main()
{
   while(~scanf("%d",&tot))
   {
     while(tot--)
	 {
	 	maxn  = 0;
 		scanf("%d",&n);
 		init();
 		for(int i = 1;i <= n; i++)
 		for(int j = 1;j <= i; j++)
 		scanf("%d",&s[i][j]);
 		
 		for(int i = 1;i <= n; i++)
		 {
 			s[i][1]+=s[i-1][1];
 			s[i][i]+=s[i-1][i-1];
 		 } 
 		/*
		for(int i = 1;i <= n; i++)
		 {
 			for(int j =1;j <= i; j++)
 			printf("%d ",s[i][j]);
 			printf("\n");
 		}*/
 		
 		
 		for(int i =3;i <= n; i++)
 		{
		 	for(int j= 2;j <  i; j++)
		     s[i][j]+=Max(s[i-1][j-1],s[i-1][j]);
		 }
		 
		 /*
		for(int i = 1;i <= n; i++)
		 {
 			for(int j =1;j <= i; j++)
 			printf("%d ",s[i][j]);
 			printf("\n");
 		}*/
		 
 		for(int i =1;i<=n ;i++)
 		maxn=Max(maxn,s[n][i]);
 		
 		printf("%d\n",maxn);
 	}  
 	
     
   }
    return 0;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值