POJ1163 數字三角形

1.題目信息(http://poj.org/problem?id=1163)

The Triangle
Time Limit:?1000MS?Memory Limit:?10000K
Total Submissions:?30397?Accepted:?17973

Description

7
3   8
8   1   0
2   7   4   4
4   5   2   6   5(Figure 1)
Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.?

Input

Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.

Output

Your program is to write to standard output. The highest sum is written as an integer.

Sample Input

5
7
3 8
8 1 0 
2 7 4 4
4 5 2 6 5

Sample Output

30


1.記憶遞歸型動歸

#include <iostream>
#include <algorithm>
#define m 101
using namespace std;
int n;
int d[m][m];
int maxsum[m][m];int MAXsum(int i,int j){if(maxsum[i][j]!=-1){return maxsum[i][j];}if(i==n){maxsum[i][j]=d[i][j];}else{int x=MAXsum(i+1,j);int y=MAXsum(i+1,j+1);maxsum[i][j]=max(x,y)+d[i][j];}return maxsum[i][j];
}
int main()
{int i,j;cin>>n;for(i=1;i<=n;i++)for(j=1;j<=i;j++){cin>>d[i][j];maxsum[i][j]=-1;}cout<<MAXsum(1,1)<<endl;return 0;
}
2.遞推

#include <iostream>
#include <algorithm>
using namespace std;int main()
{int n;int d[101][101];int maxsun[101][101];cin>>n;for(int i=0;i<n;i++)for(int j=0;j<=i;j++){cin>>d[i][j];}for(int i=0;i<n;i++){maxsun[n-1][i]=d[n-1][i];//cout<<d[n-1][i];}for(int i=n-2;i>=0;i--)for(int j=0;j<=i;j++)maxsun[i][j]=max(maxsun[i+1][j],maxsun[i+1][j+1])+d[i][j];cout<<maxsun[0][0]<<endl;/*for(int i=0;i<n;i++){for(int j=0;j<=i;j++){cout<<maxsun[i][j];}cout<<""<<endl;}*/return 0;
}


3.空間優化

#include <iostream>
#include <algorithm>
using namespace std;
#define m 101
int d[m][m];
int n;
int *maxsum;
int main()
{int i,j;cin>>n;for(i=1;i<=n;i++)for(j=1;j<=i;j++)cin>>d[i][j];maxsum =d[n];for(i=n-1;i>=1;i--)for(j=1;j<=i;j++)maxsum[j]=max(maxsum[j],maxsum[j+1])+d[i][j];cout<<maxsum[1]<<endl;return 0;
}


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536196.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536196.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536196.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

virtualbox的USB識別

VirtualBox識別USB教程 作者&#xff1a;Vincent June 13, 2017 在Virtualbox虛擬機配置面板中打開USB設備選項&#xff0c;分別勾選上“啟動USB控制器”“啟用usb2.0控制器”選項&#xff0c;如果有錯誤去https://www.virtualbox.org/wiki/Downloads 下載相應版本的插件包&a…

ubuntu實現簡單的劃詞工具

ubuntu實現簡單的劃詞工具 由于ubuntu下面沒有比較好用的劃詞翻譯工具&#xff0c;而且本人比較喜歡有道詞典&#xff0c;雖然ubuntu下有deepin版本的有道詞典包&#xff0c;可是總是會有bug&#xff0c;卡死等等。所以自己參考別人寫了一個小工具&#xff0c;涉及shell和pyth…

動態規劃進階題目之滑雪

Problem F: 動態規劃進階題目之滑雪 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 4 Solved: 3[Submit][Status][Web Board]Description Michael喜歡滑雪百這并不奇怪&#xff0c; 因為滑雪的確很刺激。可是為了獲得速度&#xff0c;滑的區域必須向下傾斜&#xff0c;而且當…

修改win10我的文檔下載等移動別處

win10移動我的文檔&#xff0c;下載等到其他盤符辦法 解決辦法 1.選擇我的文檔&#xff0c;鼠標右鍵選擇屬性&#xff0c;在工具欄選擇位置&#xff0c;然后選擇想移動到哪里的盤符即可&#xff0c;如圖&#xff1a;2.操作完后選擇應用->確定&#xff0c;就這么簡單。

神奇的口袋

2755:神奇的口袋查看 提交 統計 提示 提問總時間限制: 10000ms 內存限制: 65536kB描述有一個神奇的口袋&#xff0c;總的容積是40&#xff0c;用這個口袋可以變出一些物品&#xff0c;這些物品的總體積必須是40。John現在有n個想要得到的物品&#xff0c;每個物品的體積分別是a…

Ubuntu16.04LTS修改開機動畫

ubuntu16.04LTS修改開機動畫 ubuntu自帶的開機動畫實在是很不滿美觀&#xff0c;但是又不想重寫&#xff0c;怎么辦&#xff1f; 接下來交你們一招。 1.開機動畫文件夾 Ubuntu14.04的開機動畫在/usr/share/plymouth文件夾內 2.下載開機動畫 兩種方式&#xff1a; 從Ubun…

Qt的Xml操作QDomDocument

Qt的Xml操作QDomDocument Qt對于Xml的支持是很好的&#xff0c;一些我們需要的操作應有盡有&#xff0c;下面簡單介紹一下怎樣使用。主要有以下幾點使用&#xff1a; 寫xml到文件讀xml添加節點到xml刪除xml中某節點信息修改xml中某節點信息 準備工作 .pro加入QT xml需要in…

2815:城堡問題

2815:城堡問題 查看提交統計提示提問 總時間限制: 1000ms 內存限制: 65536kB描述1 2 3 4 5 6 7 #############################1 # | # | # | | ######---#####---#---#####---#2 # # | # # # # ##---#####---#####---#####---#3 # …

冒泡排序法函數

文章目錄冒泡排序法的函數實現使用教程冒泡排序法的函數實現 話不多說上代碼&#xff0c;拿去直接用。 // 冒泡排序函數 /* * brief sort * param array為數組名稱&#xff0c;length為數組的長度&#xff0c;order為1或0,1代表從小到大排序 * 0代表從大到小排序…

boost序列化(Serialization)

本文章轉載自 http://m.blog.csdn.net/zj510/article/details/8105408 程序開發中&#xff0c;序列化是經常需要用到的。像一些相對高級語言&#xff0c;比如JAVA, C#都已經很好的支持了序列化&#xff0c;那么C呢&#xff1f;當然一個比較好的選擇就是用Boost&#xff0c;這個…

java基礎經典練習題

【程序1】 題目&#xff1a;古典問題&#xff1a;有一對兔子&#xff0c;從出生后第3個月起每個月都生一對兔子&#xff0c;小兔子長到第三個月后每個月又生一對兔子&#xff0c;假如兔子都不死&#xff0c;問每個月的兔子總數為多少&#xff1f; //這是一個菲波拉契數列問題 p…

ubuntu下wps不能輸入中文

ubuntu下wps不能輸入中文 原因是因為fcitx環境的原因&#xff0c;想了解fcitx的可以看這篇文章&#xff0c;鏈接。 使用腳本解決 將下面的腳本復制到新建的文件中&#xff0c;chmod加權限&#xff0c;然后執行即可。 #! /bin/bash #--------------------------------------…

常見的幾種內排序算法以及實現(C語言)(轉)

所有未排序的數組是經過檢查合法的主要的內排序包括冒泡、插入、希爾、堆排序、歸并、快速、桶排序等其C語言實現的源文件下載地址&#xff1a;http://download.csdn.net/detail/mcu_tian/9530227冒泡排序冒泡排序應該是排序中最簡單的算法了主要思路如下&#xff1a;1&#xf…

常見編程命名縮寫

命名縮寫 通用縮寫翻譯控件縮寫翻譯addressaddr地址calendarcdr日歷applicationapp應用程序messageDialogmsgdlg消息框asynchronizationasyn異步drawerdrw抽屜averageavg平均數buttonGroupbtngrp按鈕分組bitmapbmp位圖checkBoxchk復選框bufferbuf緩沖區containercntr容器chara…

funCode課程實訓(C++ )

funcode是一個簡單的游戲制作引擎&#xff0c;適合c初學者操作&#xff0c;可以幫助初學者更好的了解c環境&#xff0c;以及各種函數的實現&#xff0c;本學期我們用funcode作為C最后的課程設計&#xff0c;所以我就使用funcode制作一個打地鼠的小游戲。以下是對這個小程序的描…

Nodejs,Npm,React安裝教程

React安裝 1.下載node.js安裝包 下載二進制包 選擇比較穩定的版本進行安裝&#xff0c;v8.9 2.安裝 直接把文件解壓復制到某個目錄下&#xff0c; sudo cp -r node-v8.9.0 /opt/node #你下載的版本sudo touch /etc/profile.d/node.sh #新建一個腳本文件sudo gedit /etc/…

Ubuntu下的提示信息彩色顯示

【問題】 雖然已經折騰過了&#xff1a; 【已解決】Ubuntu中讓終端只顯示當前路徑&#xff0c;而不顯示絕對路徑 但是&#xff0c;終端中的prompt提示信息&#xff0c;不是彩色的&#xff0c;導致的結果是&#xff1a; 當終端中輸出信息很多時&#xff1a; 【已解決】Ubun…

hustoj的搭建

最近開始接觸服務器之類的&#xff0c;就自己搭建一個hustoj的服務器&#xff0c;hustoj系統的搭建在網上已經很完善了&#xff0c;這里我就簡單的說一下&#xff0c;作為自己的學習筆記。 安裝主要環境&#xff0c;Apache2&#xff0c;MySQL&#xff0c;php5和PHPmyadmin。 …

Shell字符串操作集合

字符操作字符串的長度獲取字符串中某些字符的個數統計單詞的個數bash提供的數組數據結構它是以數字為下標的和C語言從0開始的下一樣awk里面的數組取子串匹配求子串sed有按行打印的功能記得用tr把空格換為行號tr來取子串head和tail查詢字串子串替換tac 會將文本的內容倒置顯示正…

百練4982 踩方格

總時間限制: 1000ms 內存限制: 65536kB描述有一個方格矩陣&#xff0c;矩陣邊界在無窮遠處。我們做如下假設&#xff1a;a. 每走一步時&#xff0c;只能從當前方格移動一格&#xff0c;走到某個相鄰的方格上&#xff1b;b. 走過的格子立即塌陷無法再走第二次&#xff1b;…