60pts求助
查看原帖
60pts求助
531454
航小怕楼主2023/12/16 21:57

就是想把这个队形拆分成两半,然后看看每一边能提取出多长的递增子序列,但是60pts ,WA了4个点 代码```cpp

include <stdio.h>

int n; int arr[114]; int left[51]; int right[51]; int findLengthOfLIS(int nums[], int numsSize) { int dp[numsSize];

for (int i = 0; i < numsSize; i++) {
    dp[i] = 1;
}

for (int i = 1; i < numsSize; i++) {
    for (int j = 0; j < i; j++) {
        if (nums[i] > nums[j]) {
            if (dp[i] < dp[j] + 1) {
                dp[i] = dp[j] + 1;
            }
        }
    }
}

int maxLength = 0;
for (int i = 0; i < numsSize; i++) {
    maxLength = maxLength > dp[i] ? maxLength : dp[i];
}

return maxLength;

} int main(){ scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",&arr[i]); int len=n/2; for(int i=0;i<len;i++){ left[i]=arr[i]; } for(int i=0;i<len;i++){ right[len-i-1]=arr[i+len]; } printf("%d",n-findLengthOfLIS(left,len)-findLengthOfLIS(right,len));

return 0;

}

2023/12/16 21:57
加载中...