BNU Graceful Prime Decomposition 记忆化搜索
来源:互联网 发布:知悉与悉知的区别 编辑:程序博客网 时间:2024/06/05 18:33
将n分成素数相加的形式,相加的素数必须小于k并且相加的素数不能连续出现。素数的顺序不同算是不同的相加方式。
给定n,k,问素数相加的方式有几种?题目&&样例
打巨表过的,原来我对打表还不熟悉。看看下面写的,真是神奇!!!记忆化搜索,dp思想。。。
#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;#define M 1004int num[M];int p[M];int n,k;void pri(){ memset(num,0,sizeof(num)); int cnt=1; num[1]=1; for(int i=2; i<=36; i++) { if(num[i]==0) { p[cnt++]=i; for(int j=i*2; j<60; j+=i) num[j]=1; } }}void solve(){ cin>>n>>k; int dp[55][55]; int ans[55]; ans[1]=0; memset(dp,0,sizeof(dp)); for(int tmp = 2; tmp <= n; tmp ++) { ans[tmp] = 0; if(!num[tmp] && tmp <= k) { dp[tmp][tmp] = 1; ans[tmp] ++; } for(int i = 2; i < tmp; i ++) { if(i > k) break; if(num[i]) continue; dp[tmp][i] += ( ans[tmp - i] - dp[tmp - i][i] ); ans[tmp] += dp[tmp][i]; } } cout<<ans[n]<<endl;}int main(){ int t; scanf("%d",&t); pri(); for(int cas=1; cas<=t; cas++) { solve(); } return 0;}
- BNU Graceful Prime Decomposition 记忆化搜索
- BNU 25593 Prime Time 记忆化dp
- BNU - Dividing Stones 记忆化搜索
- HDU 4166 & BNU 32715 Robot Navigation (记忆化bfs)
- 记忆化搜索例题
- PKU1088---记忆化搜索
- PKU1088 记忆化搜索
- HDU1078 记忆化搜索
- HDU1501 记忆化搜索
- HDU1978 记忆化搜索
- poj1661 记忆化搜索
- zoj1107记忆化搜索
- poj1191(记忆化搜索)
- 滑雪 记忆化搜索
- hdu3779---记忆化搜索
- hdu2452---记忆化搜索
- 【记忆化搜索】滑雪
- 记忆化搜索 HDU1501
- SCP linux
- IOU
- Rendering in Rails
- 判断一个数是不是四的幂次
- dbgrideh选择多行
- BNU Graceful Prime Decomposition 记忆化搜索
- Android初小试--Hello World
- weblogic 部署ssh2项目,报错hibernate3.HibernateQueryException 以及 Lorg/apache/velocity/app/VelocityEngin解决办法
- myeclipse配置tomcat问题
- 1978到2008年间的12次暴富机遇,你抓住了几次?
- 整理CVPR2012感兴趣的文章
- HDU 1372 Knight Moves
- java 字符串编码转换
- objective-c中的特性