这个题感觉有点问题啊
查看原帖
这个题感觉有点问题啊
1180146
kaito_936楼主2024/3/29 15:56
#include<iostream>
using namespace std;
int dp1[101], dp2[101], sum=0, n1, a[101];

int main()
{
    cin >> n1;
    for (int i = 0; i < n1; i++) {
	cin >> a[i];
    }

    for (int i = 0; i < n1; i++) {
	dp1[i] = 1;
	for (int j = i-1; j >= 0; j--) {
	    if (a[j] < a[i]) {
		dp1[i] = max(dp1[i], dp1[j] + 1);
	    }
	}
    }

    for (int i = n1-1; i>=0; i--) {
	dp2[i] = 1;
	for (int j = i + 1; j<n1; j++) {
	    if (a[j] < a[i]) {
		dp2[i] = max(dp2[i], dp2[j] + 1);
	    }
	}
    }

    for (int i = 0; i < n1; i++) {
	//if (dp1[i] > dp2[i]-1) continue;//这个地方不应该要满足1<=i<=k吗,但是加上答案错了,不加AC了
	sum = max(sum, dp1[i] + dp2[i]-1);
    }
    cout << n1-sum << endl;

    return 0;
}
2024/3/29 15:56
加载中...