zoukankan      html  css  js  c++  java
  • hdu 2391 Filthy Rich (简单dp)

    其实这题很水~但是通过做这题我终于知道了cin的输入有多慢了,以前做题总感觉自己很别人的思路一样怎么就慢了那么长时间呢,现在知道了,有一部分原因是有cin,cout输入输出的原因。

    这题用cin输入会超时,有scanf就ok了。

    其实这题就是一个递推公式,dp[i][j]=max(dp[i-1][j],max(dp[i-1][j-1],dp[i][j-1]));

    代码:

     1 #include<stdio.h>
    2 #include<stdlib.h>
    3 #include<string.h>
    4 int a[1002][1002];
    5 int max(int x,int y)
    6 {
    7 return x>y?x:y;
    8 }
    9 int main()
    10 {
    11 int t,n,m,i,j,x;
    12 scanf("%d",&t);
    13 for(int cas=1;cas<=t;cas++)
    14 {
    15 scanf("%d%d",&n,&m);
    16 memset(a,0,sizeof(a));
    17 for(i=1;i<=n;i++)
    18 {
    19 for(j=1;j<=m;j++)
    20 {
    21 scanf("%d",&x);
    22 x+=max(a[i-1][j],max(a[i][j-1],a[i-1][j-1]));
    23 a[i][j]=x;
    24 }
    25 }
    26 printf("Scenario #%d:\n%d\n\n",cas,a[n][m]);
    27 }
    28 return 0;
    29 }

    还有一个递推公式也对,而且用时更少,不知道为什么。。。。

    dp[i][j]=max(dp[i-1][j],dp[i][j-1]);

    代码:

     1 #include<stdio.h>
    2 #include<stdlib.h>
    3 #include<string.h>
    4 int a[1002][1002];
    5 int max(int x,int y)
    6 {
    7 return x>y?x:y;
    8 }
    9 int main()
    10 {
    11 int t,n,m,i,j,x;
    12 scanf("%d",&t);
    13 for(int cas=1;cas<=t;cas++)
    14 {
    15 scanf("%d%d",&n,&m);
    16 memset(a,0,sizeof(a));
    17 for(i=1;i<=n;i++)
    18 {
    19 for(j=1;j<=m;j++)
    20 {
    21 scanf("%d",&x);
    22 x+=max(a[i-1][j],a[i][j-1]);
    23 a[i][j]=x;
    24 }
    25 }
    26 printf("Scenario #%d:\n%d\n\n",cas,a[n][m]);
    27 }
    28 return 0;
    29 }




  • 相关阅读:
    java继承
    Linux下word转pdf以及unoconv中文乱码问题
    jquery点击事件捕获
    在Windows上玩TensorFlow(一)——安装Docker【转】
    php面试总结
    [转载] PHP 线程,进程和并发
    微信小程序数据解密
    sql基础整理
    PHP 底层的运行机制与原理【转载】
    react-native 运行原理【转载】
  • 原文地址:https://www.cnblogs.com/misty1/p/2283288.html
Copyright © 2011-2022 走看看