flyunicorninsky 2023-10-28 17:10 采纳率: 100%
浏览 5
已结题

动态规划 导弹拦截 与答案只差1

想问一下为什么只有三个点过不去还都是只差1

img


#include<iostream>
using namespace std;

int a[100007]= {0},path[27]= {0},f1[100007]= {0},f2[100007]= {0};

int main()
{
    int n=-1,maxx=0,minn=0,flag1=0,flag2=0,x;
    while(cin>>x)a[++n]=x;
    f1[0]=1;
    f2[0]=1;
    //cout<<n;
    for(int i=1; i<n; i++) {
        maxx=0;
        minn=0;
        for(int j=0; j<i; j++) {
            if(f1[j]>maxx&&a[i]<=a[j]) {
                maxx=f1[j];
                //if(i==1)
                //cout<<flag1<<"\t";
                //cout<<"?????"<<endl;
            }
            //maxx=j;
            if(f2[j]>minn&&a[i]>a[j]) {
                minn=f2[j];
            }
        }
            f1[i]=maxx+1;
            f2[i]=minn+1;
    }
    int ans1=0,ans2=0;
//    for(int i=0; i<n; i++) {
//        cout<<a[i]<<":"<<f1[i]<<"\t";
//    }
//    cout<<endl;
//    for(int i=0; i<n; i++) {
//        cout<<f2[i]<<" ";
//    }
//    cout<<endl;
    for(int i=0; i<n; i++) {
        if(f1[i]>ans1)
            ans1=f1[i];
        if(f2[i]>ans2)
            ans2=f2[i];

    }
    cout<<ans1<<endl<<ans2;
    return 0;
}
  • 写回答

2条回答 默认 最新

  • flyunicorninsky 2023-10-28 22:16
    关注

    懂了,需要++n;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月28日