数字三角形问题 算法入门经典
来源:互联网 发布:ug数控车编程教程视频 编辑:程序博客网 时间:2024/05/18 03:22
递归方法:
#include <stdio.h>#define maxn 100int buf[maxn][maxn];int n;int d(int i, int j){int t1, t2;return i == n ? buf[i][j] : buf[i][j] + (((t1 = d(i+1, j)) > (t2 = d(i+1, j+1))) ? t1 : t2);}int main(){ /*5912 1510 6 82 18 9 519 7 10 4 16 结果 59*/int i, j;scanf("%d", &n);for(i = 1; i <=n; ++i)for(j = 1; j <= i; ++j)scanf("%d", &buf[i][j]);printf("%d\n", d(1, 1));return 0;}记忆搜索(递归):
#include <stdio.h>#include <string.h>#define maxn 100int buf[maxn][maxn];int d[maxn][maxn];int n;int dfunc(int i, int j){if(d[i][j] >= 0) return d[i][j];return d[i][j] = buf[i][j] + (i == n ? 0 : dfunc(i+1, j) > dfunc(i+1, j+1) ? dfunc(i+1, j) : dfunc(i+1, j+1));}int main(){int i, j;scanf("%d", &n);for(i = 1; i <= n; ++i) for(j = 1; j <= i; ++j) scanf("%d", &buf[i][j]); memset(d, -1, sizeof(d));printf("%d\n", dfunc(1, 1));return 0;}
递推方法:
#include <stdio.h>#define maxn 200int d[maxn][maxn];int n;void dfunc(){int i, j;for(i = n - 1; i >= 1; --i)for(j = 1; j <= i; ++j) d[i][j] += d[i+1][j] > d[i+1][j+1] ? d[i+1][j]:d[i+1][j+1];} int main(){int i, j; scanf("%d", &n);for(i = 1; i <= n; ++i)for(j = 1; j <= i; ++j) scanf("%d", &d[i][j]);dfunc();printf("%d\n", d[1][1]);return 0;}
0 0
- 数字三角形问题 算法入门经典
- 【算法】数字三角形问题
- 算法 数字三角形问题
- sdut1730数字三角形问题(dp入门题)
- 动态规划算法:数字三角形问题
- 算法笔记 //14_数字三角形问题
- 动态规划入门经典<一>之数字三角形
- 经典动态规划问题--数字三角形 POJ--1163
- DP经典应用(一)数字三角形问题
- 算法竞赛入门经典 UVa1225数数字
- 数字三角形 DP入门
- 算法竞赛入门经典2-4倒三角形
- 算法竞赛入门经典2.5 2-3倒三角形
- 算法竞赛入门经典 习题1-9 三角形(triangle)
- 算法竞赛入门经典ch_1_practice6判断三角形(c++)
- 倒水问题 算法入门经典
- 算法入门经典:开灯问题
- 数字三角形 循环算法
- nginx http模块中配置的实现和解析---1
- [JS]JQuery中使用Ajax赋值给全局变量异常解决方案
- Android Project Butter分析
- 查找(顺序查找、二分查找、插值查找)
- gSOAP error code,HTTP 1.1 error codes
- 数字三角形问题 算法入门经典
- Effective C++——》条款9:绝不在构造和析构过程中调用virtual函数
- 学会转弯也是人生的智慧
- 用户空间存取内核空间
- [Unity3D]Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
- 从页面选择文件到FTP上传(使用struts2框架)
- C语言,内存对齐,内存分配,地址操作,结构体(一)
- Android中获取联系人信息(一)
- 增加一块新硬盘,如何把它挂载到/home目录 从而扩大home空间