####动态规划之仓鼠吃豆子 【题目】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 - 中文开源技术交流社区...相关推荐

  1. 在C语言中数据耦合例子,耦合性 内聚加实例 - osc_yip56055的个人空间 - OSCHINA - 中文开源技术交流社区...

    基本信息 耦合性(或称"耦合度") 英文 : coupling 耦合性也叫块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块之间 ...

  2. qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...

    预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windows ...

  3. python编程代码执行漏洞_代码执行漏洞 - 安全先师的个人空间 - OSCHINA - 中文开源技术交流社区...

    0x00 前言 最近发现的一个新站,不妨试试手. 0x01 基础信息 漏洞点:tp5 method 代码执行,payload如下 POST /?s=captcha_method=__construct ...

  4. 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...

    //功能:仿射加密 密钥:[3][5][9][11][15][17][19][21][23]有逆元的数 例子:pku  c=7,d=3  输出 :EVN 编辑环境:vc++6.0 include in ...

  5. c语言输出法雷序列,法雷(法里)序列 - osc_h0wb1wlt的个人空间 - OSCHINA - 中文开源技术交流社区...

    定义: 对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,即法雷数列是0和1之间最简分数升序 ...

  6. android 编程klinon,一些常见的知识(四) - 393858338的个人空间 - OSCHINA - 中文开源技术交流社区...

    24.CoreText基础-字体必修课 转自:http://www.dreamingwish.com/dream-2011/coretext-ji-chu-font-basis.html 介绍一些字体 ...

  7. 三个瓶子分酒c语言源码,泊松分酒原理 - 我类个擦的个人空间 - OSCHINA - 中文开源技术交流社区...

    有一个12品脱(pint)的酒瓶,里面装满葡萄酒,另有8品脱和5品脱的瓶子各一个.问如何从中分出6品脱的酒出来? 传说泊松年轻时成功解决了该问题,勾起了他对数学的兴趣而投身数学研究,因此该问题被称为泊 ...

  8. python语言是由谁设计并领导开发的_python语言概述 - osc_lt3ocv4d的个人空间 - OSCHINA - 中文开源技术交流社区...

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

  9. c语言调用json编程,c语言开发JSON - wangxuwei的个人空间 - OSCHINA - 中文开源技术交流社区...

    安装json-c 库 $ sudo apt-get install libjson0-dev libjson0 代码json_test.c #include #include #include #in ...

  10. c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...

最新文章

  1. hdu 6205 card card card 尺取+超神读入挂
  2. 商汤科技宣布C轮战略融资6亿美元 阿里领投苏宁跟投
  3. 单击事件开启线程时,再次单击就会出现 java.lang.IllegalThreadStateException: Thread already started. 错误
  4. WIN-8“内置管理员无法激活此应用”问题
  5. 这是一篇能让你升职加薪,赢娶白富美的文章
  6. JAVA反射修改常量,以及其局限
  7. react学习(42)----react中的jsx表达对象
  8. 儿童节到了,你会让孩子将来当程序员吗?
  9. python opencv用法中文教程
  10. 【正则表达式】正则匹配注释
  11. SQL Server 2008 数据库快照
  12. 每天干攻防,都不会写驱动了
  13. Ajax异步请求PHP服务器,无阻塞响应的解决方案
  14. 电脑上玩和平精英_和平精英新手怎么玩 和平精英新手攻略
  15. bzoj1574[Usaco2009 Jan]地震损坏Damage*
  16. 机器学习笔试面试整理
  17. ps随意改变图层形态
  18. 20172304 《程序设计与数据结构》第五周学习总结
  19. python 动物园_python面向对象 动物园 例题
  20. 没有计算机年代科学家如何计算,难倒了无数科学家的 三体问题

热门文章

  1. 金星DEM数据介绍与下载教程
  2. 3d游戏设计读书笔记三
  3. Springboot自定义注解+AOP实现日志管理
  4. 删除idb无法启动 mysql 数据库
  5. 网页上传大文件被限制,如何设置配置文件
  6. Word如何让脚注不分栏
  7. Win11 mscorsvw程序大量占用内存的解决方法
  8. 硬件设备的软件测试,智能设备的软硬件测试都要测什么?
  9. com.homelink.android,链家-新房二手房租房
  10. 论组织管理-EMBA课程小记