题目:By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23.

3

7 4

4 6

8 5 9 3

That is, 3 + 7 + 4 + 9 = 23.

Find the maximum total from top to bottom of the triangle below:

75

95 64

17 47 82

18 35 87 10

20 04 82 47 65

19 01 23 75 03 34

88 02 77 73 07 63 67

99 65 04 28 06 16 70 92

41 41 26 56 83 40 80 70 33

41 48 72 33 47 32 37 16 94 29

53 71 44 65 25 43 91 52 97 51 14

70 11 33 28 77 73 17 78 39 68 17 57

91 71 52 38 17 14 91 43 58 50 27 29 48

63 66 04 68 89 53 67 30 73 16 69 87 40 31

04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

这题的大概意思是从上往下求和,一个数字能够选下一行两个数字中的一个,求最大的和。

分析:这题我是没有思路的。我是网上抄了份答案过的题目,看了那些外国程序员给的程序,有了些思路,写下来做点记录。这题从上往下不好做。但也能够做,仅仅是比从下往上麻烦。我的思路是。把以下的每一行加到上面去,这样就不用管以下那一行详细的内容了。比方最后一行。倒数第二行的63,它下去能取到04、62两个数字,选取两数中大的那个加到63。同理把62和98中的大者加到66,......,直到把最后一行遍历完,所有加到倒数第二行。然后对倒数第二行运行相同的操作,直到第一行就是我们要求的结果。

代码:

// test18_.cpp : 定义控制台应用程序的入口点。

//看了别人的程序,似乎对这个题有一定的理解了。
/*
分析:这题要求计算的是从上往下邻接数据相加和的最大值。假设从上往下做这道题的话,就仅仅能遍历全部数据,走遍
全部路径来确定最大值。换一种思路,从下往上分析。 首先最后一行,把这一行的数据加入到倒数第二行去,然后把倒数第二行的数据
加入到倒数第三行去。往上叠加的方式。
*/ #include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <iomanip> using namespace std; int main()
{
ifstream File("data.txt");
string line;
//开辟二维数组空间
int n=15;
int **data;
data=new int *[n];
//for(int i=0; i<n; i++)
//{
// data[i]=new int [n];
//}
int i=0;
int j;
if(File.is_open())
{
while(getline(File,line))
{
data[i]=new int[i+1];
//cout<<line<<endl;
stringstream ss(line);
j=0;
while(ss>>data[i][j])
{
j++;
}
++i;
}
}
//把数组打印出来
for(int i=0; i<n; i++)
{
for(int j=0; j<i+1; j++)
{
cout<<setw(2)<<data[i][j]<<" ";
}
cout<<endl;
}
for(int i=n-2; i>=0; i--)
{
for(j=0; j<i+1; j++)
{
if(data[i+1][j]>data[i+1][j+1])
{
data[i][j]=data[i][j]+data[i+1][j];
}
else
{
data[i][j]=data[i][j]+data[i+1][j+1];
}
}
}
//
cout<<"最大的路径和为"<<data[0][0]<<endl;
//释放空间
for(int i=0; i<n; i++)
{
delete []data[i];
}
delete []data;
system("pause");
return 0;
}

结果:

Project Euler18题 从上往下邻接和的更多相关文章

  1. 《剑指offer》第三十二题(分行从上到下打印二叉树)

    // 面试题32(二):分行从上到下打印二叉树 // 题目:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层 // 打印到一行. #include <cstdio> #in ...

  2. 《剑指offer》第三十二题(不分行从上往下打印二叉树)

    // 面试题32(一):不分行从上往下打印二叉树 // 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印. #include <iostream> #include ...

  3. 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  4. 32-1题:不分行从上到下打印二叉树/BFS/deque/queue

    题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 考点 1.广度优先遍历 2.binary tree 3.queue 4.deque 思路 按层打印:8.6.10.5.7.9.11 用ST ...

  5. 【剑指Offer面试编程题】题目1523:从上往下打印二叉树--九度OJ

    题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, ...

  6. 每日一题 - 剑指 Offer 32 - II. 从上到下打印二叉树 II

    题目信息 时间: 2019-06-25 题目链接:Leetcode tag: 队列 BFS 难易程度:简单 题目描述: 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 示 ...

  7. 每日一题 - 剑指 Offer 32 - I. 从上到下打印二叉树

    题目信息 时间: 2019-06-25 题目链接:Leetcode tag:BFS(广度优先搜索) 队列 难易程度:中等 题目描述: 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印 ...

  8. 【剑指offer】从上向下打印二叉树

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26089165 剑指offer上的第23题,实际上就是考察二叉树的层序遍历,详细思想能够參考 ...

  9. C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解

    剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...

随机推荐

  1. AMQP server localhost:5672 closed the connection. Check login credentials: Socket closed

    2016-04-13 09:23:38.755 18850 INFO oslo.messaging._drivers.impl_rabbit [req-fafc8542-9403-4b5a-89d2- ...

  2. (Go)04.go工作区目录规范及简单例子

    一.规范目录结构 D:\project\src\go_dev\day1\example1 二.设置GOPAH环境变量 三.hello world 1.hello world package main ...

  3. php 关于使用七牛云存储

    1.首先注册七牛云存储账号 http://www.qiniu.com/ 2.获得密钥 3.仔细查看文档 http://developer.qiniu.com/docs/v6/sdk/php-sdk.h ...

  4. 【Python小试牛刀】循环

    1.斐波那契数列 斐波那契数列,数列前两项为1,之后每一项都是前两项之和. #!/usr/bin/env python3 a, b = 0, 1 while b < 100: print(b) ...

  5. Python定制容器

    Python 中,像序列类型(如列表.元祖.字符串)或映射类型(如字典)都是属于容器类型,容器是可定制的.要想成功地实现容器的定制,我们需要先谈一谈协议.协议是什么呢?协议(Protocols)与其他 ...

  6. (转)Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目

    vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一. ...

  7. Deutsch lernen (01)

    Was macht Martin? - Um 8.00 Uhr steht martin auf. aufstehen - aufstand - ist aufgestanden 起床 Um 6 Uh ...

  8. CDC之fast->slow (1)

    Sampling slower signals into faster clock domains causes fewer potential problems than sampling fast ...

  9. windows server 2012 r2 安装无法找到install.wim 错误代码0x80070026,以及制作U启动盘决解ISO文件超过5G大小限制的解决方案(转)

    戴尔服务器r530 windows server 2012 r2 安装无法找到install.wim 错误代码0x80070026,以及制作U启动盘决解ISO文件超过5G大小限制的解决方案 关于在服务 ...

  10. DNN:逻辑回归与 SoftMax 回归方法

    UFLDL Tutorial 翻译系列:http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial 第四章:SoftMax回归 简介: ...