Project Euler 18 Maximum path sum I( DP and 记忆化搜索 )
题意:****求从三角形顶端出发到达底部,所能够得到的最大路径和
方法一:记忆化搜索
/*************************************************************************
> File Name: euler018t2.c
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年06月28日 星期三 11时01分01秒
************************************************************************/
#include <stdio.h>
#include <inttypes.h>
#define MAX_N 15
int32_t Mat[MAX_N][MAX_N];
int32_t f[MAX_N][MAX_N]; // f[x][y] 代表从点 (x,y) 到最底端的最长路径长度
int32_t DFS(int32_t x , int32_t y) { // 搜索点(x,y)下方路径中的最大值
if (x + 1 == MAX_N) return Mat[x][y];
if (f[x][y] != 0 ) return f[x][y]; // 记忆化,如果(x,y)已经求得下面路径中的最大值,则返回上次记忆的最长路径
int32_t ans1 , ans2;
ans1 = DFS(x + 1 , y) + Mat[x][y];
ans2 = DFS(x + 1 , y + 1) + Mat[x][y];
f[x][y] = ans1 > ans2 ? ans1 : ans2; // 记忆化部分
return f[x][y];
}
int32_t main() {
freopen("euler018input.txt","r",stdin);
for (int32_t i = 0 ; i < MAX_N ; i++) {
for (int32_t j = 0 ; j <= i ; j++) {
scanf("%d",&Mat[i][j]);
}
}
int32_t ret = DFS(0,0);
printf("%d\n",ret);
return 0;
}
方法二:DP
/*************************************************************************
> File Name: euler018.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年05月17日 星期三 22时21分32秒
************************************************************************/
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 15;
int mat[MAX_N + 4][MAX_N + 4];
int main(){
memset(mat,0,sizeof(mat));
freopen("euler018input.txt","r",stdin);
for(int i = 0 ; i < MAX_N ; i++)
for(int j = 0 ; j <= i ; j++) scanf("%d",&mat[i][j]);
printf("mat[1][1] = %d\n",mat[1][1]);
for(int i = MAX_N-1-1 ; i >= 0 ; i--){
for(int j = 0 ; j <= i ; j++){
mat[i][j] += max(mat[i+1][j] , mat[i+1][j+1]);
}
}
printf("ans = %d\n",mat[0][0]);
return 0;
}
Project Euler 18 Maximum path sum I( DP and 记忆化搜索 )的更多相关文章
- poj1179 区间dp(记忆化搜索写法)有巨坑!
http://poj.org/problem?id=1179 Description Polygon is a game for one player that starts on a polygon ...
- 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索
问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...
- 【bzoj1415】【聪聪和可可】期望dp(记忆化搜索)+最短路
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=57148470 Descrition 首先很明显是 ...
- 二进制数(dp,记忆化搜索)
二进制数(dp,记忆化搜索) 给定k个<=1e6的正整数x(k不大于10),问最小的,能被x整除且只由01组成的数. 首先,dp很好写.用\(f[i][j]\)表示i位01串,模ki的值是j的数 ...
- HDU 4597 Play Game (DP,记忆化搜索)
Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total S ...
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...
- HDU 2089 不要62(数位DP·记忆化搜索)
题意 中文 最基础的数位DP 这题好像也能够直接暴力来做 令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ dp[ ...
- HDU 1208 Pascal's Travels 经典 跳格子的方案数 (dp或者记忆化搜索)
Pascal's Travels Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Su ...
- kuangbin专题十二 HDU1078 FatMouse and Cheese )(dp + dfs 记忆化搜索)
FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
随机推荐
- [bzoj1001][BeiJing2006]狼抓兔子_网络流_最小割转对偶图
狼抓兔子 bzoj-1001 BeiJing2006 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...
- IPC总结学习
写的不错. http://www.cnblogs.com/CheeseZH/p/5264465.html IPC的方式通常有管道(包括无名管道和命名管道).消息队列.信号量.共享存储.Socket.S ...
- 剖析Mysql的InnoDB索引
摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节. InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本 ...
- wifi断线问题
近期在项目中,遇到wifi常常断线现象,平台是Android平台,现象是:连接wifi后,长时间播放视频,会出现wifi断开,界面上WiFi图标显示打叉,请问有WiFi方面的行家朋友,有没有办法来检測 ...
- Java读源代码学设计模式:适配器Adapter
适配器模式相关源代码:slf4j-1.6.1.hibernate-3.6.7 大家都知道.log4j是一个广泛使用的日志工具,除此之外.sun公司在JDK中也有自己的日志工具,也就是java.util ...
- C语言数组和函数实例练习(一)
C语言的数组和函数部分的知识,在语法上和Java语法是有所相似的,这里只通过实例总结一些自己感觉需要理解的部分知识. 1.数组 数组中的元素具有相同的数据类型:数组一旦创建,不能被改变:数组中元素在内 ...
- Linux下安装JRE和Eclipse IDE for C/C++ Developers
Linux32位,下载eclipse-cpp-luna-R-linux-gtk.tar.gz和jre-8u11-linux-i586.rpm 放到家文件夹中. http://www.eclipse. ...
- HDU1269 有向图强连通分量
题目大意:问一个有向图是否任意两点在两个方向上互相连通. 有向图强连通分量定义:如果一个图中的任意两点在两个方向上都互相连通,则该图为强连通图.极大强连通图为有向图的强连通分量(注意是极大,不是最大. ...
- (转)android res文件夹里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)
android res文件夹里面的drawable(ldpi.mdpi.hdpi.xhdpi.xxhdpi) (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),F ...
- nyoj--973--天下第一(SPFA判断负环)
天下第一 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 AC_Grazy一直对江湖羡慕不已,向往着大碗吃肉大碗喝酒的豪情,但是"人在江湖漂,怎能 不挨刀&qu ...