踏马的,昨天写的代码今天就看不懂了。。。。。。想到了再补吧。。。。
题目:
ac代码:
#include<iostream>
#include<cstdio>
#include<map>
#include<set>
#include<cstring>
using namespace std;
const int N = 2e3+10;
typedef long long int LL ;
long long int f[N][N];
int w[N];
int main()
{
int n;
cin >> n ;
for(int i = 1; i <= n ; i ++)cin >> w[i];
memset(f,-0x3f,sizeof f);
f[0][0] = 0 ;
for(int i = 1; i <= n ; i ++)
{
f[i][0] = f[i-1][0];
for(int j = n ; j >= 1; j --)
{
if(f[i-1][j-1] + w[i] >= 0)f[i][j] = max(f[i-1][j-1]+w[i],f[i-1][j]);
else f[i][j] = f[i-1][j];
}
}
int maxd = 0;
for(int i = 1; i <= n ; i ++)if(f[n][i] >= 0)maxd = i ;
cout << maxd << endl;
return 0 ;
}