记忆化为什么只有38分
查看原帖
记忆化为什么只有38分
1111300
ayszYW楼主2024/9/24 13:52
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int arr[25],dp[25][5000];

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(){
	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;
}



rt 提交

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