1. 程式人生 > >hdu 1028 母函式模板

hdu 1028 母函式模板

#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;
}