POJ 3132

来源:互联网 发布:什么是网络智能电视 编辑:程序博客网 时间:2024/05/19 04:05

 http://poj.org/problem?id=3132

求n由m个不同素数组成的可能方法有多少种

0-1背包问题  卡死我了

 

#include<stdio.h>#include<string.h>int prim[1000];bool v[1130];int len;int dp[1131][15];void GetPrime(){int i,j,k=0;memset(v,true,sizeof(v));for(i=2;i<=1130;i++){if(v[i]){prim[k++]=i;for(j=i*2;j<=1130;j+=i)v[j]=false;}}len=k;}void solve(){int i,j,k;memset(dp,0,sizeof(dp));dp[0][0]=1;for(k=0;k<len;k++){for(i=1130;i>=prim[k];i--){for(j=1;j<=14;j++)dp[i][j]+=dp[i-prim[k]][j-1];}}}int main(){int i,j,k;int n,m;GetPrime();solve();while(scanf("%d%d",&n,&m)&&n+m){printf("%d\n",dp[n][m]);}return 0;}


 

原创粉丝点击