Cunkou @ 2019-11-14 11:50:09
求助大佬!!! 什么情况啊?只过了一个点? 求救。。。
#include<iostream>
#include<cstring>
using namespace std;
int n,a,s,b;
const int maxn = 5005;
int dp[maxn][maxn];
int x[maxn],y[maxn];
int solve(int nows,int pos) {
if (dp[nows][pos]!=-1) return dp[nows][pos];
if (pos>=n) return 0;
else{
int temp1,temp2;
if (a+b>=x[pos] && nows>=y[pos]) temp1 = solve(nows-y[pos],pos+1)+1;
temp2 = solve(nows,pos+1);
return dp[nows][pos] = max(temp1,temp2);
}
}
int main() {
memset(dp,-1,sizeof(dp));
cin>>n>>s;
cin>>a>>b;
for (int i=1;i<=n;i++) cin>>x[i]>>y[i];
cout<<solve(s,1)<<endl;
return 0;
}
by Cunkou @ 2019-11-14 11:58:35
@Cunkou 没给temp1初始化,初始化了-1后又过了两个,就剩下两个了。。。