最后一个点过不去,明明思路是题解的dp
  • 板块P1164 小A点菜
  • 楼主Sasya
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/15 10:31
  • 上次更新2023/10/23 21:31:18
查看原帖
最后一个点过不去,明明思路是题解的dp
738749
Sasya楼主2023/3/15 10:31

本来写的搜索就是最后一个点过不去,然后改成题解的思路之后还是过不去,我是没学过dp的所以我猜测我把dp又写成搜索了,但是我也看不出和dp的区别是什么,因为思路都是前n道菜用m块钱的种类。求大佬帮忙看看。

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
using ll= long long int;

int N,M;
vector<vector<int>> dpmap(101,vector<int>(10001));
vector<int> price(101);

int dp(int n,int m){
	if(!m)return 1;
	if(!n)return 0;
	if(dpmap[n][m]) return dpmap[n][m];
	if(m-price[n]>=0) return dpmap[n][m]=dp(n-1,m-price[n])+dp(n-1,m);
	else return dpmap[n][m]=dp(n-1,m);
}

int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>N>>M;
	rep(i,1,N)cin>>price[i];
	cout<<dp(N,M);
}
2023/3/15 10:31
加载中...