本学期的的算法实践课的实验作业。写的不好请大家多多指教。

【题目】

试设计一个算法,计算出从三角形的顶到底的一条路径,使该路径经过的数字总和最大。

数据输入:

由文件input.txt提供输入数据。文件的第一行是数字三角形的行数,该数字在1到100之间。接下来n行是数字三角形各行中的数字。所有数字在0至99之间。

结果输出:

程序运行结束时,将计算结果输出到文件output.txt中。文件第一行中的数字是计算出的最大值。

输入文件实例:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>int ReadFile(const char name[200], int input[20][20], int& sum)//读取txt文件内的内容
{int a[20][20];FILE* fp;fp = fopen(name, "r");if (fp == NULL){printf("File cannot open!");return 0;}fscanf(fp, "%d", &sum);//记录三角形的行数for (int i = 0; i < sum; i++){for (int j = 0; j <= i; j++){fscanf(fp, "%d", &input[i][j]);//将数字三角形的数字存入数组}}fclose(fp);
}
int WriteFile(const char name[200],int maxSum, int a[20], int& sum)//将结果写入另一个txt文件
{FILE* fp;fp = fopen(name, "w");if (fp == NULL){printf("File cannot write!");return 0;}fprintf(fp,"最大路径和为:%d",maxSum);//将数字三角形的最大路径和写进另一个txt文件内fprintf(fp, "\n");fprintf(fp, "路径为:");for (int i = 0; i < sum; i++)//写入路径{fprintf(fp, "%d  ",a[i]);//}fclose(fp);return 1;
}int FindMax(int input[20][20],int output[20][20], int& sum)//找到最大路径和
{for (int i = sum - 2; i >=0; i--){for (int j = 0; j <=i; j++){if (input[i][j] + input[i + 1][j] > input[i][j] + input[i + 1][j + 1]){input[i][j] = input[i][j] + input[i + 1][j];output[i][j] = input[i][j];}else {input[i][j] = input[i][j] + input[i + 1][j + 1];output[i][j] = input[i][j];}}}printf("最大路径和为:%d",input[0][0]);//在控制台输出最大路径和printf("\n");return input[0][0];
}
int FindRode(int a[20][20],int b[20][20],int d[20],int& sum)//路径
{int num;int t = 0;printf("路径为:");for (int s = 0; s <sum; s++)//打印路径,将路径存入一维数组{num = a[s][t];d[s] =num;printf("%d  ", a[s][t]);if (a[s][t] + b[s + 1][t] < a[s][t] + b[s + 1][t + 1]){t = t + 1;}}printf("\n");return 1;
}int main(int argc, char* argv[])
{int input[20][20];int output[20][20];int a[20][20];int b[20];int sum;int k;ReadFile("F:\\input.txt",input, sum);for (int i = 0; i < sum ; i++)//将数字三角形存入数组{for (int j = 0; j <= i; j++){a[i][j] = input[i][j];}}k = FindMax(input, output, sum);FindRode(a,output,b,sum);WriteFile("F:\\output.txt",k,b,sum);return 0;
}

【运行结果】

【动态规划】数字三角形c语言相关推荐

  1. 动态规划——数字三角形C语言

    一:分析 先说一下相关动态规划的一些概念,参考下方博文. 原文链接:https://blog.csdn.net/every__day/article/details/88174082 "一个 ...

  2. 动态规划-数字三角形问题

    有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数. 1 3 2 4 10 1 4 3 2 20 从第一行的数开始,每次可以往左下或右下走一格,直到走到最下 ...

  3. 算法设计与分析——动态规划——数字三角形问题

    数字三角形问题 1.题目描述:给定一个由n行数字组成的数字三角形,如图3-7所示.设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 算法设计:对于给定的由n行数字组成的数字 ...

  4. 七:动态规划-数字三角形

    问题: 数字三角形   问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1&l ...

  5. [AcWing] 1018. 最低通行费(C++实现)数字三角形模型

    [AcWing] 1018. 最低通行费(C++实现)数字三角形模型 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 ...

  6. 数字三角形路径最小值c语言题目,算法学习——动态规划之点数值三角形的最小路径...

    算法描述在一个n行的点数值三角形中,寻找从顶点开始每一步可沿着左斜或者右斜向下直到到达底端,使得每个点上的数值之和为最小 右图为一个4行的点数值三角形 算法思路接收用户输入行数n 使用一个二维数组a[ ...

  7. C语言数字三角形(动态规划)

    题目 总时间限制: 1000ms 内存限制: 65536kB 描述 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到 ...

  8. C语言蓝桥杯刷题:数字三角形

    题目链接 解题思路: 该题是一道经典的动态规划,对于这样的数字三角形, 我们用一个数组arr存储各个位置的数字,再用另一个数组brr来记录到该位置的最大路径 对于图中的7,我们用数组保存就是arr[0 ...

  9. C++数字三角形问题(动态规划)

    一.问题描述 ★问题描述:给字一个由n行数字组成的数字三角形(等腰三角形).试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. ★算法设计:对于给定的由n行数字组成的数字三 ...

最新文章

  1. R语言pacman包管理R编程语言需要的包实战:使用p_load函数安装和加载多个R包、使用p_unload函数卸载多个R包、使用p_update函数更新过期的R包
  2. 数据库中char与varchar类型的区别
  3. DW的代码格式化和净化功能
  4. tensorflow基础
  5. red6.4 mysql_rhel6.4 yum本地yum源配置
  6. java循环的嵌套执行
  7. MongoDB 教程三: 高级查询
  8. python字符串,列表常用操作
  9. 数据结构c语言版算法设计题,数据结构题集(C语言版)算法设计答案
  10. 初中信息技术说课稿_语文说课稿模板一等奖
  11. Power BI 数据分析基础
  12. 格式化日期时间字符串 Get-Date -Uformat , -format
  13. CAD和GIS绘制图形分析
  14. ios swift是静态语言吗
  15. 大数据-什么是大数据?大数据的相关概念
  16. 商简智能:世界领先的高级计划与排程APS供应商
  17. 抵押贷款经纪市场现状及未来发展趋势
  18. 2015年3季度基金持股超流通股30%的个股一览
  19. java装了1.8,更换成11后,-version还是显示java8的解决方法
  20. GLPT团队程序设计天梯赛 2023正式赛

热门文章

  1. 如果们正预测基本面子
  2. 蓝牙盾/颈椎按摩仪/迷你充电宝/探头温度记等,段码LCD液晶显示驱动IC-VK1088B QFN32 4*4超小体积,22seg*4com且可通过指令进入省电模式
  3. 柯西分布——正态分布的兄弟
  4. 重磅!《中国DevOps现状调查报告(2021年)》正式发布!(附报告获取方式)
  5. SAP CO T-Code.
  6. Springboot启动后频繁打印错误日志 /null/swagger-ui.html解决方案
  7. 士兵 POJ1723
  8. html5中插入样式表方法,如何插入css样式?
  9. 前端开发--箭头函数
  10. 261期计算机开机号,福彩3D2017第261期彩吧3D开机号147