数塔问题(DP算法)自底向上计算最大值

Input
输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。
Output
对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。
Sample Input
Sample Output
#include<iostream>
#include<math.h>
#include<malloc.h>
using namespace std; int num=; typedef struct Tree
{
int val;
int max;
struct Tree*left;//左分支节点
struct Tree*right;//右分支节点
struct Tree*sib;//兄弟节点
struct Tree*next;//linenumber
struct Tree*pre;//前继行
}Tree,*TreeNode; TreeNode first; void construction(int i,int j,int loc,int col)//构造树形结构
{
int linenum;
linenum=j;//return the linenumber; int k;
if(linenum==)
first->val=i;
else{
TreeNode p;
p=first; /* for(k=1;k<linenum-1;k++)//锁定行
{
p=p->next;
}*/
while(p->next!=NULL)
p=p->next;//锁定行 TreeNode q;
q=(TreeNode)malloc(sizeof(Tree));
q->val=i;
q->left=NULL;
q->right=NULL;
q->next=NULL;
q->sib=NULL;
//赋值 if(col==)//处理第一列的情况
{
p->next=q;
q->pre=p;
q->sib=NULL;
q->next=NULL; }
else
{
if(col==)
{}
else
{
while(p->sib!=NULL)
{ p=p->sib;
}
} p->sib=q;
q->sib=NULL; } //返回上一行 p=first;
for(k=;k<linenum-;k++)//锁定上一行
{
p=p->next; }
//锁定上一列的位置 for(k=;k<col-;k++)
{ if(p->sib!=NULL)
p=p->sib;
} if(col==)
{ p->left=q; }
else if(col==linenum)//debug
{
p->right=q; } else
{ p->right=q; p=p->sib; p->left=q; } } } void cal(TreeNode p)
{
while(p->next!=NULL)
p=p->next; p=p->pre; TreeNode q,f;
q=p;
while(q!=NULL)
{
f=q;
while(f!=NULL)
{
int m;
m=f->left->val+f->val;
int n;
n=f->right->val+f->val;
if(m>n)
f->val=m;
else
f->val=n;
f=f->sib; }
q=q->pre;
} } int main()
{
int input,m;
first=(TreeNode)malloc(sizeof(Tree));
first->next=NULL;
first->sib=NULL;
first->left=NULL;
first->right=NULL;
first->pre=NULL;
//Initial the first node
cin>>input;
m=input;
int j=;
for(int i=;i<=m;i++)
{
for(int k=;k<=i;k++)
{
int a1;
cin>>a1;
construction(a1,i,j,k);
j++;
}
} cal(first);
cout<<first->val<<endl;
return ;
}


数塔问题(DP算法)自底向上计算最大值的更多相关文章
- HDU 2084 数塔(简单DP入门)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU 2084 数塔 (dp)
题目链接 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数 ...
- hdu----(2084)数塔(dp)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- hdu 2084 数塔 (简单dp)
http://acm.hdu.edu.cn/showproblem.php?pid=2084 数塔 Time Limit: 1000/1000 MS (Java/Others) Memory L ...
- 数塔(dp)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- HDOJ.2084 数塔(DP)
数塔 点我挑战题目 题意分析 DP的思想,自上而下计算. [这几天比较忙 有空补上] 代码总览 /* Title:HDOJ.2084 Author:pengwill Date:2017-1-14 */ ...
- HDU-2084 数塔 经典dp,水
1.HDU-2084 数塔 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 3.总结:从下往上推,最后归于顶点.方程为 dp[i][j] ...
- 数字三角形/数塔问题(DP入门题)
有形如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大. 样例输入: 5 13 11 8 12 7 26 6 14 15 8 12 7 ...
- dp入门--poj 1163数塔
...
随机推荐
- Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
前言: 其实RxJava引起的内存泄漏是我无意中发现了,本来是想了解Retrofit与RxJava相结合中是如何通过适配器模式解决的,结果却发现了RxJava是会引起内存泄漏的,所有想着查找一下资料学 ...
- Python应用03 使用PyQT制作视频播放器
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/ ...
- 如何利用ansible callback插件对执行结果进行解析
最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...
- ASP.NET Core 中文文档 第四章 MVC(4.6)Areas(区域)
原文:Areas 作者:Dhananjay Kumar 和 Rick Anderson 翻译:耿晓亮(Blue) 校对:许登洋(Seay) Areas 是 ASP.NET MVC 用来将相关功能组织成 ...
- iOS UITableView 与 UITableViewController
很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...
- IdentityServer4 使用OpenID Connect添加用户身份验证
使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- Java实现多线程断点下载(下载过程中可以暂停)
线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开启好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配. ...
- SQL面试笔试经典题(Part 1)
本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记,持续更新... 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.htm ...
- SQL SERVER导入数据到ORACLE的方法总结
我们偶尔会有将数据从SQL SERVER导入到ORACLE当中的这种需求,那么这种跨数据库导数有那些方法呢?这些方法又有那些利弊呢? 下面比较肤浅的总结了一些可行的方法. 1:生成SQL脚本然后去OR ...