poj 3132 Sum of Different Primes——DP
2011-08-05 22:17
453 查看
dp还是不会啊啊啊……今天被这个题虐惨了……主要是01背包都不会……去看了背包九讲的01背包部分,大概会写了,就是有两个地方不懂,以后再想吧……
一个是为什么dp[i][j]要初始化为0
二是为什么k的那层循环要在最里面
三是为什么k要倒着枚举……
求路过大神指点啊啊啊……
一个是为什么dp[i][j]要初始化为0
二是为什么k的那层循环要在最里面
三是为什么k要倒着枚举……
求路过大神指点啊啊啊……
a27400 | 3132 | Accepted | 452K | 0MS | G++ | 807B | 2011-08-05 22:09:44 |
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> int prime[200]; int dp[1200][20];//dp[i][j]表示把i分成j份有几种 int top; int isprime(int n) { if(n==0||n==1) return 0; if(n==2||n==3) return 1; int i; for(i=2;i*i<=n;i++) { if(n%i==0) return 0; } return 1; } int main(void) { int i,v; for(i=0;i<=1199;i++) { if(isprime(i)) { prime[top++]=i; } } top--; //printf("%d\n",top); dp[0][0]=1; for(i=0;i<=top;i++)//枚举所有的素数 { for(v=1200;v>=0;v--)//对每个素数,加上去掉该素数有多少种 { if(v>=prime[i]) { for(int k=14;k>=1;k--) dp[v][k]+=dp[v-prime[i]][k-1]; } else break; } } int n,k; while(scanf("%d %d",&n,&k)==2) { if(!n&&!k) { break; } printf("%d\n",dp [k]); } }
相关文章推荐
- POJ 3132 & ZOJ 2822 Sum of Different Primes(dp)
- POJ 3132 Sum of Different Primes 动态规划 DP 0-1背包问题
- POJ 3132 Sum of Different Primes 动态规划 DP 0-1背包问题
- POJ 3132 Sum of Different Primes (DP)
- POJ 3132 & ZOJ 2822 Sum of Different Primes(dp)
- 【01背包方案数】POJ-3132 Sum of Different Primes
- Poj 3132 Sum of Different Primes
- POJ 3132 Sum of Different Primes 笔记
- POJ 3132 Sum of Different Primes
- poj 3132 Sum of Different Primes(01背包)
- POJ 3132 Sum of Different Primes
- POJ 3132 Sum of Different Primes ( 满背包问题)
- poj 3132 Sum of Different Primes
- POJ 3132 Sum of Different Primes
- POJ 3132 Sum of Different Primes
- UVa1213 - Sum of Different Primes(素数表+DP)
- UVA1213 Sum of Different Primes(素数打表+dp)
- UVa 1213 Sum of Different Primes (DP)
- UVA 1213 Sum of Different Primes(经典dp)
- 1213 - Sum of Different Primes(DP)