完全背包记录路径——sgu 116. Index of super-prime
2011-04-27 22:19
411 查看
求超级素数的过程比较简单
主要是求路径
用pa[]随时记录前驱,就好了
View Code
主要是求路径
用pa[]随时记录前驱,就好了
View Code
#include<stdio.h> #include<math.h> int prim[109]; int f[109]; int pa[109]; bool rprim[109]; int isprim(int a) { int t=sqrt(a*1.0); int i; for(i=2;i<=t;i++) { if(a%i==0) return 0; } return 1; } int main() { int n; scanf("%d",&n); int i,add=1; for(i=1;i<=n;i++) f[i]=9999999; f[0]=0; for(i=2;i<=n;i++) { if(isprim(i)==1) { rprim[i]=1; prim[add]=i; add++; } } int add1=1; for(i=1;i<=add;i++) { if(rprim[i]==1) { prim[add1]=prim[i]; add1++; } }//选超级素数 int j; for(j=0;j<n;j++) { for(i=1;i<add1&&prim[i]+j<=n;i++) { if(f[j]+1<f[j+prim[i]]) { f[j+prim[i]]=f[j]+1; pa[j+prim[i]]=j; } } } if(f ==9999999) printf("0\n"); else { printf("%d\n",f ); printf("%d",n-pa ); n=pa ; while(n) { printf(" %d",n-pa ); n=pa ; } printf("\n"); } }
相关文章推荐
- SGU 116. Index of super-prime(完全背包+输出路径)
- 【SGU】116. Index of super-prime 完全背包
- 素数 + 背包 - SGU 116. Index of super-prime
- SGU 116. Index of super-prime 容量背包
- SGU 116 Index of super-prime 数论+完全背包+输出方案
- 素数 + 背包 - SGU 116. Index of super-prime
- 01背包、完全背包、多重背包问题的C++实现及路径记录
- POJ 1787(完全背包+记录路径)
- 116 Super-Prime(完全背包+打表预处理)
- SGU 116 Index of super-prime 数论+背包
- POJ 1787 Charlie's Change (完全背包,记录路径)
- poj1787(记录路径+多重背包)(可以用完全背包来模拟)
- poj 1787 Charlie's Change(完全背包 或 多重背包 记录路径)
- Index of super-prime - SGU 116(素数+背包)
- [SGU]116. Index of super-prime
- POJ 1787 - Charlie's Change(完全背包+路径记录)
- POJ - 1787 完全背包,记录路径
- dp之完全背包poj1787(完全背包以及路径记录 推荐)
- zoj2156 Charlie's Change 完全背包+路径记录
- 快速切题 sgu116. Index of super-prime bfs+树思想