记忆化搜索93分求助((
查看原帖
记忆化搜索93分求助((
1111300
ayszYW楼主2024/9/24 13:57
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int arr[30],dp[30][15000];

int dfs(int a,int nm){
	if(nm>m)return 0;
	if(nm==m){
		return 1;
	}
	if(dp[a][nm]!=0)return dp[a][nm];
	int ret=0;
	
	for(int i=a;i<=n;i++){
		ret+=dfs(i,nm+arr[i]);
	}
	dp[a][nm]=ret;
	return ret;

}

int ans=0;
signed main(){
	ios::sync_with_stdio(0);

	cin.tie(0);

	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>arr[i];
	sort(arr+1,arr+1+n);
	for(int i=1;i<=n;i++){
		ans+=dfs(i,arr[i]);
	}
	cout<<ans;
}



T一个点是故意卡的吗

2024/9/24 13:57
加载中...