从下向上计算将下面没对得值最大的选出,加上上面的每一个值,再次循环。 #include <iostream> #include <algorithm> #include "string.h" #define Max 101 using namespace std; int D[Max][Max]; int num; int MaxSum(int num){ int i, j; for(i = num - 1; i >= 1; i --) for(j = 1; j <= i; j ++){ D[i][j] = max(D[i+1][j],D[i+1][j+1]) + D[i][j]; } return D[1][1]; } int main(int argc, char const *argv[]) { int i, j; cin >> num; for(i = 1; i <= num; i ++) for(j = 1; j <= i; j ++) cin >> D[i][j]; cout << MaxSum(num) << endl; return 0; }
动态规划 数字三角形
最新推荐文章于 2019-12-20 22:22:36 发布