哇了#2、#3、#7,跪求大佬Debug一下
查看原帖
哇了#2、#3、#7,跪求大佬Debug一下
319962
huanglinyi楼主2023/8/5 10:39
#include <iostream>
#include <algorithm> 
#include <cstdio>
using namespace std;
int t , w;
int dp[1001][31][2] , a[1001];
int f(int i , int j , int k)
{
	if(i == t)
		return a[i] == k + 1? 1 : 0;
	if(dp[i][j][k])
		return dp[i][j][k];
	else if(j)
		dp[i][j][k] = max(a[i] == k + 1? f(i + 1 , j , k) + 1 : f(i + 1 , j , k) , a[i] == k + 1? f(i + 1 , j - 1 , (k + 1) % 2) : f(i + 1 , j - 1 , (k + 1) % 2) + 1);
	else
		dp[i][j][k] = a[i] == k + 1? f(i + 1 , j , k) + 1 : f(i + 1 , j , k);
	return dp[i][j][k];
}
int main()
{
	scanf("%d %d" , &t , &w);
	for(int i = 1;i <= t;i++)
	{
		scanf("%d" , &a[i]);
	}
	printf("%d" , f(1 , w , 0));
	return 0;
}
2023/8/5 10:39
加载中...