记忆化求助

P1048 [NOIP2005 普及组] 采药

@[spessert](/user/881317) 改成下面的 ```cpp #include<bits/stdc++.h> using namespace std; int t,m; int V[200],W[200]; int mem[200][2000]; int dfs(int x,int spT){ //草药序号+剩余时间 if(mem[x][spT]!=-1) return mem[x][spT]; if(x>m) { return 0;mem[x][spT]=0; } int s1=dfs(x+1,spT),s2=-1000005;//不选 if(spT>=V[x]) s2=dfs(x+1,spT-V[x])+W[x]; return mem[x][spT]=max(s1,s2); } int main(){ memset(mem,-1,sizeof(mem)); cin>>t>>m; for(int i=1;i<=m;i++){ cin>>V[i]>>W[i]; }int res=dfs(1,t); cout<<res; return 0; } ``` 你的草药看完后会继续进行搜索
by LichKing_Arthas @ 2024-09-17 17:53:30


更直观的是把s=0改为return 0;就行
by LichKing_Arthas @ 2024-09-17 19:18:22


|