1. 程式人生 > 其它 >C/C++ 數字三角形

C/C++ 數字三角形

技術標籤:c++演算法

數字三角形 -遞迴演算法

給定一個由n行數字組成的數字三角形如下圖所示。試設計一個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。

在這裡插入圖片描述

輸入格式:
第一行輸入N,1≤N≤100,表示有N行資料,第i行有i個元素。

輸出格式:
要求輸出最大和

輸入樣例:
在這裡給出一組輸入。例如:

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

輸出樣例:
在這裡給出相應的輸出。例如:

30

程式碼:

#include <bits/stdc++.h>
using namespace std;
int a[101][101];//儲存個點的數值 int n; int mx=0;//儲存路徑和的最大值 int def(int a[][101],int s,int h,int l) { s+=a[h][l]; if(h==n-1)//當行到達最底端時 { if(s>mx)//比較路徑和 mx=s; return 0; } def(a,s,h+1,l);//遞迴到下一行的相同列下標處 def(a,s,h+1,l+1);//遞迴到下一行的 列+1 下標處 return 0; } int main() { cin>>
n; for(int i=0;i<n;i++) { for(int j=0;j<i+1;j++) { cin>>a[i][j]; } } def(a,0,0,0);//引數分別為:各點陣列 路徑和 行 列 cout<<mx; return 0; }