10分求救
查看原帖
10分求救
1070431
ywtank楼主2024/8/18 15:44

我想用递推做,但明显存在重复问题 希望各位大佬指点两句

#include <bits/stdc++.h>
using namespace std;
int a[2000],dp[2000]={0,0,1};
bool p(int n){
	if(n==0 || n==1)return false;
	for(int i=2;i*i<=n;i++){
		if(n%i==0)return false;
	}
	return true;
}
int main(){
	int n;
	cin >> n;
	int c=1;
	for(int i=1;i<=n;i++){
		if(p(i))a[c++]=i;
	}
	c--;
	for(int i=3;i<=n;i++){
		for(int j=1;j<=c;j++){
			dp[i]+=dp[i-a[j]];
		}
	}
	cout << dp[n];
	return 0;
}
2024/8/18 15:44
加载中...