Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20273
  • 博文数量: 14
  • 博客积分: 433
  • 博客等级: 下士
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-16 23:07
文章分类

全部博文(14)

文章存档

2012年(14)

最近访客

分类: C/C++

2012-09-06 12:12:31

this time the dp array is a two dimensional array, attaching to the data array

点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <cmath>

  3. using namespace std;

  4. int main()
  5. {
  6.     int n;
  7.     cin>>n;
  8.     int **way;
  9.     int ans=0;
  10.     way=new int*[n];
  11.     for(int i=0;i<n;i++){
  12.         //each line,receive input
  13.         way[i] = new int[i+1];//0->0;1->0,1
  14.         for(int j=0;j<=i;j++){
  15.             cin>>way[i][j];
  16.         }
  17.     }
  18.     //dp stars
  19.     ans=way[0][0];
  20.     for(int i=1;i<n;i++){
  21.         //dismiss first level
  22.         for(int j=0;j<=i;j++){//0,1--level two
  23.             if(j>=1&&j<i){//optimazation
  24.                 way[i][j]+=max(way[i-1][j-1],way[i-1][j]);
  25.             }
  26.             if(j==0){
  27.                 way[i][0]+=way[i-1][0];
  28.             }
  29.             if(j==i){
  30.                 way[i][i]+=way[i-1][i-1];
  31.             }
  32.             if(i==n-1){//bottom
  33.                 for(int k=0;k<n;k++){
  34.                     if(way[i][k]>ans){
  35.                         ans=way[i][k];
  36.                     }
  37.                 }
  38.             }
  39.         }
  40.     }
  41.     cout<<ans<<endl;
  42.     return 0;
  43. }

阅读(196) | 评论(0) | 转发(0) |
0

上一篇:shell

下一篇:没有了

给主人留下些什么吧!~~