您的位置:首页 > 运维架构

openjudge 拦截导弹 (DP 动态规划)

2018-03-15 17:24 267 查看
样例输入
8
389 207 155 300 299 170 158 65
样例输出
6

当整个数组位递增序列时候输出1,所以用来记录最大值maxx=1,不然会输出0,卡在这里好久,dp写的没错,但是ac不了,后来对比别人的代码,发现问题,还有一个注意点,a[i]>=a[j](i<j) ,因为是不递增序列,等于情况符合#include <iostream>
#include "cstring"
#include <stdio.h>
#include "iomanip"
#include "vector"
#include "cmath"
#include "stack"
#include "algorithm"
#include <math.h>
#include "map"
#include "queue"
using namespace std;
int main()
{
freopen("a.txt","r",stdin );
int n,a[20]={0},dp[20]={0};
cin>>n;
int i,j;
for(i=0;i<n;i++)
{
cin>>a[i];
dp[i]=1;
}
int maxx=1;
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
{
if(a[i]<=a[j])
{
dp[i]=max(dp[i],dp[j]+1);

maxx=max(dp[i],maxx);
}
}
}
// for(i=0;i<n;i++)
// maxx=max(dp[i],maxx);
cout<<maxx;
return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息