zoukankan      html  css  js  c++  java
  • HDU 2571 命运 (入门dp)

    题目链接

    题意:二维矩阵,左上角为起点,右下角为终点,如果当前格子是(x,y),下一步可以是(x+1,y),(x,y+1)或者(x,y*k) ,其中k>1。问最大路径和。

    题解:入门dp,注意负数即可。

    #include <bits/stdc++.h>
    using namespace std;
    int t,n,m,dp[25][1005],data[25][1005];
    int main()
    {
        cin>>t;
        while(t--)
        {
            cin>>n>>m;
            for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            cin>>data[i][j];
            //若全部初始化为0 行走过程可能会跳过负数
            for(int i=1;i<=n;i++) dp[i][0]=-999999;
            for(int j=1;j<=m;j++) dp[0][j]=-999999;
            dp[0][1]=dp[1][0]=0;
            for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
                for(int k=1;k<j;k++)
                {
                    if(j%k==0)
                    dp[i][j]=max(dp[i][j],dp[i][k]);
                    //注意不是j/k j/k不会遍历1
                }
                dp[i][j]+=data[i][j];
            }
            printf("%d
    ",dp[n][m]);
        }
        return 0;
    }
    /*
    1
    1 4
    100 -5 -6 3
    */
  • 相关阅读:
    51串口通信
    juicer使用备忘
    51单片机音乐盒程序
    最精简24L01程序--接收
    sqlserver 数据库迁移
    sqlserver自增主键
    js keycode
    tabindex 去掉虚线
    div 绑定keyup
    sqlserver 当前时间减去30天
  • 原文地址:https://www.cnblogs.com/Ritchie/p/8059002.html
Copyright © 2011-2022 走看看