hdu 1028 母函式模板
阿新 • • 發佈:2019-02-07
#include <iostream> #include <cstring> #define mem(x, k) ((x), (k), sizeof(x)) #define M 130 using namespace std; int g[M], G[M]; int main() { int n; while (~scanf("%d", &n)) { memset mem(g, 0); memset mem(G, 0); G[0] = 1; for (int i=1;i<=n;++i) { for (int j=0;j<=n;++j) for (int k=0;k+j<=n;k+=i) { g[j+k] += G[j]; } memcpy mem(G, g); memset mem(g, 0); } printf("%d\n", G[n]); } return 0; }
附:完全揹包;
#include<stdio.h>
#include<string.h>
int dp[200];
int main()
{
int i,j;
int n;
while(scanf("%d",&n)!=EOF)
{
memset(dp,0,sizeof(dp));
dp[0]=1;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
dp[j]+=dp[j-i];
printf("%d\n",dp[n]);
}
return 0;
}