YTU OJ 3298: 小鑫要爬山
阿新 • • 發佈:2018-12-11
3298: 小鑫要爬山
題目描述
馬上就要放假了,小鑫打算去爬山。 小鑫要去爬的這座山有n個海拔區間。為了清楚描述我們可以從上到下標號1到n。 第i個區間有i個落腳點,每一個落腳點都有一個危險值。 小鑫需要在第n個海拔區間挑選一個點向上爬,爬到第1個海拔區間(也就是山頂)。他必須規劃一條路徑,讓危險值之和最小。這樣才安全的。 並不是任意兩個落腳點之間都可以相互到達。我們這樣定義對於第i個(i<n)區間的第j個落腳點,只有第i+1個區間的第j個和第j+1個可以到達。 你能幫助他找到最安全的路麼?
輸入
輸入資料為多組,到檔案結束。 對於每一組資料,第一行有一個數,為n 。n≤100; 接下來有n行,第i行有i個數。代表第i個區間i個落腳點的危險值。 所有資料均在int範圍內。
輸出
對於每組資料,輸出一行一個數,為答案。
樣例輸入
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
樣例輸出
17
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int dp[99][99]={0}; int main() { int n,m,i,j,k; int a[99][99]={0}; while(cin>>n) { int s=0; for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { cin>>a[i][j]; } } for(i=n-1;i>0;i--) { for(j=1;j<=i;j++) { a[i][j]+=min(a[i+1][j],a[i+1][j+1]); } } cout<<a[1][1]<<endl; } return 0; }