数学三角形问题
2015-10-19 20:16
239 查看
#include <iostream> #include <fstream> #include <string> #include <vector> #include <stdio.h> #include <stdlib.h> using namespace std; int main(){ //数据读取 ifstream in("input.txt",ios::in); if (!in.is_open()){ cout << "Error opening file"; exit(1); } char ch; int n = in.get()-'0';//读取n //cout << n << endl; in.get(); int** m = new int* ;//生产n*n阶的矩阵存放数据 for (int i = 1; i <= n; i++){ m[i-1] = new int[i]; } int k = 0; int j = 0; while (!in.eof()) { j = 0; while((ch = in.get()) != '\n'){ m[k][j] = ch - '0'; //cout << m[k][j] << endl; j++; if ((ch = in.get()) == '\n')break; if (in.eof())break; } k++; } in.close(); //功能实现 for (int i = 1; i < n; i++){ for (int j = 0; j <= i; j++){ int ld = j==0?m[i-1][j]:m[i-1][j-1];//这个数与上一级左边合并,如果是第一个数就和右边合并 int rd = j==i?m[i-1][j-1]:m[i - 1][j];//这个数与上一级右边合并,如果是最后一个数就和左边合并 m[i][j] = m[i][j] + (ld>rd ? ld : rd);//选择最小的 } } for (int i = 0; i < n; i++){ for (int j = 0; j <= i; j++){ cout << m[i][j] << " "; } cout << endl; } int vmax = 0; for (int i = 0; i < n; i++){ vmax = vmax>m[n - 1][i] ? vmax : m[n - 1][i]; } cout << "最大值为:" << vmax << endl; return 0; }
相关文章推荐
- 【Intermediate SQL-1 】五道较难的sql练习_大连理工软院数据库上机答案
- 黑马程序员 Java基础——多态、抽象类及接口
- javascript入门
- iOS --- 使用CoreTelephony来获取运营商信息
- Java中的基本数据类型
- Java内存溢出详解及解决方案
- Mysql学习 - 触发器和存储过程
- Linux删除乱码文件
- [20151019]SCZ训练
- 你真的了解 console 吗
- 深究递归和迭代的区别、联系、优缺点及实例对比
- Asp.net笔记(1)
- servlet之登录页面
- UIPopoverController 指向 UIBarButtonItem 并缓慢消失
- MariaDB
- DotNetOpenAuth实践系列
- java基础学习笔记——Stringbuffer(2)
- OpenCV之鼠标操作
- 应用库后关于_OBJC_CLASS_$_文件referenced from:objc-class-ref in报错的测试总结
- python 去除不可见的控制字符