关闭

第三届河南省大学生程序设计竞赛 聪明的“KK”

759人阅读 评论(0) 收藏 举报

dp 问题,不过要注意开始的时候下表要考虑好,我是让d[][] 的四周空出一行,这样就不会出错了

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
int N, M;
int map[25][25], d[25][25];
int dp(int N, int M)
{
    memset(d, 0, sizeof(d)); 
    for(int i=0; i<=N; i++)
    for(int j=0; j<=M; j++)
    if(d[i+1][j]>d[i][j+1])
     d[i+1][j+1] = d[i+1][j] + map[i+1][j+1];
     else d[i+1][j+1] = d[i][j+1] + map[i+1][j+1];
     
   return d[N][M]; 
}
int main()
{
    scanf("%d %d",&N, &M);
    for(int i=1; i<=N; i++)
    for(int j=1; j<=M; j++)
    cin>>map[i][j];
    int t = dp(N,M);
    printf("%d\n",t);
   system("pause");
   return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:125325次
    • 积分:2371
    • 等级:
    • 排名:第16317名
    • 原创:115篇
    • 转载:11篇
    • 译文:3篇
    • 评论:13条
    常用链接
    最新评论