zoukankan      html  css  js  c++  java
  • poj1163 The Triangle ——DP入门题

    题目链接:http://poj.org/problem?id=1163

    题目思路:

      从三角形的底部开始考虑

     1 #include <iostream>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cstdio>
     6 using namespace std;
     7 const int MAX = 100;
     8 int a[MAX][MAX], dp[MAX][MAX];
     9 int main(void) {
    10   //freopen("1163.in", "r", stdin);
    11   int n,i,j; scanf("%d",&n);
    12   for (i = 0; i < n; ++i) {
    13     for (j = 0; j < i+1; ++j) {
    14       scanf("%d", &a[i][j]);
    15     }
    16   }
    17   memset(dp, 0, sizeof(dp));
    18   for (i = 0; i < n; ++i) dp[n-1][i] = a[n-1][i];
    19   for (i = n - 2; i >= 0; --i) {
    20     for (j = 0; j < n - 1; ++j) {
    21       dp[i][j] = max(dp[i+1][j], dp[i+1][j+1]) + a[i][j];
    22     }
    23   }
    24   printf("%d\n", dp[0][0]);
    25   return 0;
    26 }

    还是从最简单的开始做起吧

    另外一种写法:

     1 #include <iostream>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cstdio>
     6 using namespace std;
     7 const int MAX = 100;
     8 int a[MAX][MAX], dp[MAX][MAX], n;
     9 int f(int i, int j) {
    10   if (dp[i][j] >= 0) return dp[i][j];
    11   else {
    12     if (i == n-1) dp[i][j] = a[i][j];
    13     else dp[i][j] = a[i][j] + max(dp[i+1][j], dp[i+1][j+1]);
    14     return dp[i][j];
    15   }
    16 }
    17 int main(void) {
    18   int i,j; scanf("%d",&n);
    19   for (i = 0; i < n; ++i) {
    20     for (j = 0; j < i+1; ++j) {
    21       scanf("%d", &a[i][j]);
    22     }
    23   }
    24   memset(dp, -1, sizeof(dp));
    25   for (i = 0; i < n; ++i) dp[n-1][i] = a[n-1][i];
    26   for (i = n-1; i >= 0; --i)
    27     for (j = 0; j < i+1; ++j)
    28       f(i, j);
    29   printf("%d\n", dp[0][0]);
    30   return 0;
    31 }

    这就是所谓的记忆化搜索

  • 相关阅读:
    jsp文件上传、下载
    Hadoop 集群常见错误
    大学手机课表系统前景和范围文档
    psp工具软件前景与范围文档
    PSP系统项目前景与范围文档
    社团管理系统项目前景与范围文档
    PSP结构化分析
    PSP(个人软件开发过程)需求分析
    有关高校科研系统相关信息分析
    QQ应用前景与范围文档
  • 原文地址:https://www.cnblogs.com/liuxueyang/p/3088855.html
Copyright © 2011-2022 走看看