示出了乙個數字三角形。 請編乙個程式計算從頂至底的某處的一條路
徑,使該路徑所經過的數字的總和最大。
每一步可沿左斜線向下或右斜線向下走;
1《三角形行數<25;
三角形中的數字為整數<1000;
第一行為n,表示有n行
後面n行表示三角形每條路的路徑權
路徑所經過的數字的總和最大的答案
57 3 8
8 1 0
2 7 4 4
4 5 2 6 5
30
複製過來自配邊框下劃線我也是醉了。。。。
動歸的題目,貌似很經典很基礎~我是從下往上每次取最大的然後加成和,最後(1,1)所在的便是最大路徑和。
**如下:
數字三角形#include #include #include #define maxn 1000
using namespace std;
int a[maxn][maxn], b[maxn][maxn]; //a用來存原陣列,b用來存和
int main()
}for(int i=1; i<=n; i++)
for(int i=n-1; i>=1; i--)
else
b[i][j] = b[i+1][j] + a[i][j];}}
printf("%d", b[1][1]);
return 0;
}
要求走到最後mod 100最大
第1行n,表示n行 <=25
第2到n+1行為每個的權值
mod 100最大值
2 1
99 98
99
默默地說。。有一種被巢狀的趕腳。。。。
其實就只有這個沒太看懂題目,簡短有力啊,都把我整蒙了。。。直接貼**好了。。。
#include int map[30][30], n, max = 0, m[30][30];
int dfs(int n, int m, int add)
else if(n < n) }
int main()
dfs(0, 0, 0);
printf("%d\n", max);
return 0;
}
數字三角形必須經過某乙個點,使之走的路程和最大
第1行n,表示n行 <=25
第2到n+1行為每個的權值
程式必須經過n div 2,n div 2這個點
最大值
21
1 1
2
做了數字三角形1之後,這道就很好做啦,只要想一想三角形和必經過的一點之間的關係,把經過點的
下面縮小成乙個小三角形就ok啦
eg:4行的三角形 (2,2)點為必須經過的,即下面紅色的數字~三角形裡面紫色的部分就是經過2後
可以取到的數字,而綠色的就是必須要取到的才能經過2~
形成的三角形: 陣列中的儲存狀況:
1 1
1
2 1
21
23 1 2 3
1
234 1 2 3 4
**:
#include #include #include #define maxn 1000
using namespace std;
int a[maxn][maxn], b[maxn][maxn]; //a存原始三角形 , b存和
int main()
}for(int i=n; i>=1; i--)
for(int i=n-1; i>=n/2; i--) //注意必經過的點是n/2,
else
b[i][j] = b[i+1][j] + a[i][j];}}
for(int i=n/2-1; i>=1; i--)
printf("%d\n", b[1][1]);
return 0;
}
數字三角形必須經過某乙個點,使之走的路程和最大
第1行n,表示n行 <=25
第2到n+1行為每個的權值
第n+2行為兩個數x,y表示必須經過的點
最大值
21
1 1
1 1
2
和上面的差不太多,就是需要考慮上下分別用動歸~
**:
#include #include #include #define maxn 1000
using namespace std;
int a[maxn][maxn], b[maxn][maxn], c[maxn][maxn];
int main()
}int x, y;
scanf("%d%d", &x, &y);
for(int i=n; i>=x; i--) //下三角
}for(int i=1; i<=x; i++) //上三角
}int result = b[x][y] + c[x][y] - a[x][y]; //這個a[x][y]加了兩次,要減掉~
printf("%d\n", result);
return 0;
}
對了~~merry christmas!!!
*<<<<+
>_<嘻嘻~~
數字三角形
題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 25 三角形中的數字為整數 1000 輸入第一行為n,表示有n行 後面n行表示三角形每條路的路徑權 輸出路徑所經過的數字的總和最大的答案 樣...
數字三角形
description 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,...
數字三角形
3 8 8 1 0 2 7 4 4 4 5 2 6 5 上圖給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的數字之和。input 1 5 7 3 8 8 1 0 2 7 4 4 4 ...