Tyvj1044数字三角形(动态规划入门)

   
 
From Admin
数字三角形
 
     
     
  背景 Background  
  09年 USACO 11月月赛  铜牌第一道
     
     
  描述 Description  
  示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
径,使该路径所经过的数字的总和最大。
 每一步可沿左斜线向下或右斜线向下走;
 1<三角形行数<25;
 三角形中的数字为整数<1000;

     
     
  输入格式 Input Format  
  第一行为N,表示有N行
后面N行表示三角形每条路的路径权
     
     
  输出格式 Output Format  
  路径所经过的数字的总和最大的答案
     
     
  样例输入 Sample Input [复制数据]  
  5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
     
     
  样例输出 Sample Output [复制数据]  
  30
     
     
  时间限制 Time Limitation  
  各个测试点1s
     
     
  注释 Hint  
  搜索80分,记忆化搜索AC

 

 

动态规划基础题,不解释

#include<stdio.h> int map[26][26]; int maxsum[26][26]; int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) scanf("%d",&map[i][j]); for(int j=1;j<=n;j++) maxsum[n][j]=map[n][j]; for(int i=n;i>1;i--) for(int j=1;j<i;j++) { if(maxsum[i][j]>maxsum[i][j+1]) maxsum[i-1][j]=maxsum[i][j]+map[i-1][j]; else maxsum[i-1][j]=maxsum[i][j+1]+map[i-1][j]; } printf("%d/n",maxsum[1][1]); } return 0; }

你可能感兴趣的:(测试,input,output)