2021-07-28-HDOJ-1087

DP:有段时间没写题了,这道DP居然想了半小时
题目:最大上升子序列
思路:另开一个数组r保存:以当前值为结尾的最大上升子序列,则递推关系为:
r[i+1] = a[i+1] + max(r[0:i])
最后输出max(r[0:n])即可

#include 

int main()
{
//    freopen("C:/Users/yuanxing.shi/Documents/HDOJ/input.txt","r",stdin);
    int i,j,n,a[1024],r[1024],m;
    while(1)
    {
        scanf("%d",&n);
//        printf("%d ",n);
        if(0==n)
            break;
        for(i=0;im)
                        m = r[j];
                }
                r[i] = a[i] + m;
            }
        }
        for(i=0,m=0;im)
                m = r[i];
        }
        printf("%d\n",m);
    }
    return 0;
}

补充:数据存在溢出的可能用long long比用int好,不过只是数据集不作这方面的要求罢了.

你可能感兴趣的:(2021-07-28-HDOJ-1087)