c语言编程仓鼠吃豆子,动态规划之仓鼠吃豆子 - osc_8quu62cg的个人空间 - OSCHINA - 中文开源技术交流社区...
####动态规划之仓鼠吃豆子 【题目】m * n的方格上,每一格存放一定数量的豆子,一只仓鼠从左下角一直吃到右上角,但仓鼠只能向右或向上走。那么仓鼠做多可以吃多少豆子? 【思路】因为仓鼠只能向左或者向上走,那么到达任意一点的豆子数量由两部分组成:该点本身的豆子beans(x,y),max{到达左边的豆子总数path(x-1,y), 到达下方的豆子总数path(x, y-1)}。 于是得到到达任意一点的豆子总数的公式P(x,y) = F(x,y) + max(P(x-1, y), P(x, y-1))。计算并记录每个点的豆子总数,同时为了避免重复计算,将计算的中间结果存储在path数组中。 【注意】
因为矩阵原点在左上角,需要对公式进行变换。P(x,y) = F(x,y) + max(P(x+1, y), P(x, y-1));
注意边界值,这里需要注意三点,左下角的点、左边界、下边界。
#include
#include
int max(int a, int b) {
if (a > b)
return a;
return b;
}
int main() {
int m, n;
int i, j;
int **beans;
int **path;
scanf("%d %d", &m, &n); /* m * n矩阵 */
beans = (int**)malloc(sizeof(void*) * m);
path = (int**)malloc(sizeof(void*) * m);
for (i = 0; i < m; i++) {
beans[i] = (int*)malloc(sizeof(int) * n);
path[i] = (int*)malloc(sizeof(int) * n);
}
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &beans[i][j]);
}
}
printf("Beans:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%3d ", beans[i][j]); /* 显示矩阵上豆子数 */
}
printf("\n");
}
for (i = m - 1; i >= 0; i--) { /* to up */
for (j = 0; j < n; j++) { /* to right */
if (i == m - 1 && j == 0) { /* 左下角 */
path[i][j] = beans[i][j];
} else if (i != m - 1 && j == 0) { /* 左边界 */
path[i][j] = beans[i][j] + path[i+1][j];
} else if (i == m - 1 && j != 0) { /* 下边界 */
path[i][j] = beans[i][j] + path[i][j-1];
} else { /* 一般情况 */
path[i][j] = beans[i][j] + max(path[i+1][j], path[i][j-1]);
}
}
}
printf("Path:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%3d ", path[i][j]);
}
printf("\n");
}
printf("max path:%d\n", path[0][n-1]);
for (i = 0; i < m; i++) {
free(beans[i]);
free(path[i]);
}
free(path);
free(beans);
}
c语言编程仓鼠吃豆子,动态规划之仓鼠吃豆子 - osc_8quu62cg的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐
- 在C语言中数据耦合例子,耦合性 内聚加实例 - osc_yip56055的个人空间 - OSCHINA - 中文开源技术交流社区...
基本信息 耦合性(或称"耦合度") 英文 : coupling 耦合性也叫块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块之间 ...
- qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...
预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windows ...
- python编程代码执行漏洞_代码执行漏洞 - 安全先师的个人空间 - OSCHINA - 中文开源技术交流社区...
0x00 前言 最近发现的一个新站,不妨试试手. 0x01 基础信息 漏洞点:tp5 method 代码执行,payload如下 POST /?s=captcha_method=__construct ...
- 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...
//功能:仿射加密 密钥:[3][5][9][11][15][17][19][21][23]有逆元的数 例子:pku c=7,d=3 输出 :EVN 编辑环境:vc++6.0 include in ...
- c语言输出法雷序列,法雷(法里)序列 - osc_h0wb1wlt的个人空间 - OSCHINA - 中文开源技术交流社区...
定义: 对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,即法雷数列是0和1之间最简分数升序 ...
- android 编程klinon,一些常见的知识(四) - 393858338的个人空间 - OSCHINA - 中文开源技术交流社区...
24.CoreText基础-字体必修课 转自:http://www.dreamingwish.com/dream-2011/coretext-ji-chu-font-basis.html 介绍一些字体 ...
- 三个瓶子分酒c语言源码,泊松分酒原理 - 我类个擦的个人空间 - OSCHINA - 中文开源技术交流社区...
有一个12品脱(pint)的酒瓶,里面装满葡萄酒,另有8品脱和5品脱的瓶子各一个.问如何从中分出6品脱的酒出来? 传说泊松年轻时成功解决了该问题,勾起了他对数学的兴趣而投身数学研究,因此该问题被称为泊 ...
- python语言是由谁设计并领导开发的_python语言概述 - osc_lt3ocv4d的个人空间 - OSCHINA - 中文开源技术交流社区...
python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...
- c语言调用json编程,c语言开发JSON - wangxuwei的个人空间 - OSCHINA - 中文开源技术交流社区...
安装json-c 库 $ sudo apt-get install libjson0-dev libjson0 代码json_test.c #include #include #include #in ...
- c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...
C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...
最新文章
- hdu 6205 card card card 尺取+超神读入挂
- 商汤科技宣布C轮战略融资6亿美元 阿里领投苏宁跟投
- 单击事件开启线程时,再次单击就会出现 java.lang.IllegalThreadStateException: Thread already started. 错误
- WIN-8“内置管理员无法激活此应用”问题
- 这是一篇能让你升职加薪,赢娶白富美的文章
- JAVA反射修改常量,以及其局限
- react学习(42)----react中的jsx表达对象
- 儿童节到了,你会让孩子将来当程序员吗?
- python opencv用法中文教程
- 【正则表达式】正则匹配注释
- SQL Server 2008 数据库快照
- 每天干攻防,都不会写驱动了
- Ajax异步请求PHP服务器,无阻塞响应的解决方案
- 电脑上玩和平精英_和平精英新手怎么玩 和平精英新手攻略
- bzoj1574[Usaco2009 Jan]地震损坏Damage*
- 机器学习笔试面试整理
- ps随意改变图层形态
- 20172304 《程序设计与数据结构》第五周学习总结
- python 动物园_python面向对象 动物园 例题
- 没有计算机年代科学家如何计算,难倒了无数科学家的 三体问题