1003 Problem C

来源:互联网 发布:网络拓扑设计方案 编辑:程序博客网 时间:2024/05/16 06:36

题意:
什么下棋什么的。。都不重要重要的是:
给一串数 求某一个字串的最大值 这个字串要求是递增序列
思路:
这里写图片描述
如图所示 表中的数据是DP 那个角上打错了 每行的右边是最新的 冒号前面代表的是坐标
DP初始化是第一个数字 从上往下计算
DP[I]=DP[J]+W[I];

。。。思路很清楚 就是说不出来

// ConsoleApplication28.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;int dp[1000];int w[1000];int main(){    int n;    int  max;    while (cin >> n&&n)    {        for (int i = 0;i<n;i++)            cin >> w[i];        dp[0] = w[0];        max = dp[0];        for (int i = 1;i<n;i++)        {            dp[i] = w[i];            for (int j = 0;j<i;j++)                if (w[i]>w[j] && dp[j] + w[i]>dp[i])                {                    dp[i] = dp[j] + w[i];                }        }        for (int i = 0;i<n;i++)            if (dp[i]>max)                max = dp[i];        cout << max << endl;    }}
0 0
原创粉丝点击