?? 數字三角形.txt
字號:
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAX 10000
int f[10][10];//f[i][j],從頂點到第i行第j列點的最大路徑
int thi[10][10];//三角形的點的值
//數字三角形 動態規劃
/*
輸入:
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
輸出:
30
*/
int cal(int num)
{
int i,j,max;
f[1][1]=thi[1][1];
for(i=2;i<=num;i++)
{
for(j=1;j<=i;j++)
{
if(j==1) f[i][j]=f[i-1][j]+thi[i][j];
else if(j==i) f[i][j]=f[i-1][j-1]+thi[i][j];
else
{
if(f[i-1][j-1]>f[i-1][j]) f[i][j]=f[i-1][j-1]+thi[i][j];//從左上角下來
else f[i][j]=f[i-1][j]+thi[i][j];//從上面下來
}
}
}
max=0;
for(j=1;j<=num;j++)
if(max<f[num][j]) max=f[num][j];
return max;
}
int main()
{
int num,i,j;
cin>>num;
for(i=1;i<=num;i++)
{
for(j=1;j<=i;j++)
cin>>thi[i][j];
}
cout<<cal(num)<<endl;
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -