ソースを参照

数字三角形问题

liuhuan 5 年 前
コミット
25d3f2fa27
1 ファイル変更17 行追加18 行削除
  1. 17 18
      B.cpp

+ 17 - 18
B.cpp

@@ -2,26 +2,25 @@
 // Created by liuhuan on 18-11-7.
 //
 #include <bits/stdc++.h>
+
 using namespace std;
-int main(){
-    int n;
-    cin >> n;
-    int a[n+1][n+1];
-    for(int i = 1; i <= n; i++){
-        for(int j = 1; j <= i; j++){
-            cin >> a[i][j];
-        }
-    }
+#define Max 101
 
-    int sum[n+1][n+1];
-    sum[1][1] = a[1][1];
-    for(int i = 2; i <= n; i++){
-        sum[i][1] = sum[i-1][1] + a[i][1];
-        for(int j = 2; j < i; j++){
-            sum[i][j] = max(sum[i-1][j-1], sum[i-1][j]) + a[i][j];
+int D[Max][Max];
+int num;
+int MaxSum(int num){
+    for(int i = num - 1; i >= 1; i --)
+        for(int j = 1; j <= i; j ++){
+            D[i][j] = max(D[i+1][j],D[i+1][j+1]) + D[i][j];
         }
-        sum[i][i] = sum[i-1][i-1] + a[i][i];
-    }
-    cout << *max_element(sum[n]+1, sum[n]+n+1) << endl;
+    return D[1][1];
+}
+int main()
+{
+    cin >> num;
+    for(int i = 1; i <= num; i ++)
+        for(int j = 1; j <= i; j ++)
+            cin >> D[i][j];
+    cout << MaxSum(num) << endl;
     return 0;
 }