3675 - 切绳子

一段长为n的绳子,可以切成很多段,并且有好几种切法,比如当n=4时,可以切成1 1 1 1, 1 1 2,1 3,2 2。

也就是n=4时,有4种切法。现在给定n,要求输出有几种切法。

题目输入

每组测试数据包含一个整数n

题目输出

每行一个测试数据,1<=n<=60

输入/输出样例

题目输入

4
1

题目输出

4
0

C语言解答

#include<stdio.h>
int n;
void qie(int l,int i)
{
	int j;
	for(j=i;j<=l;j++)
	{
		l-=j;if(l==0)n++;
		if(l>=j)qie(l,j);
		l+=j;
	}
}
int main()
{
	int l;
	while(scanf("%d",&l)==1)
	{
		n=0;
		qie(l,1);
		printf("%d\n",n-1);
	}
	return 0;
}

C++解答

#include <stdio.h>
int dp[80][80];
int main()
{
	int i,j;
	int n;
	dp[0][0]=0;
	for(j=0;j<80;j++)
	dp[0][j]=1;
	for(i=0;i<80;i++)
	dp[i][0]=0;
	for(j=1;j<80;j++)
	dp[1][j]=1;
	for(i=2;i<80;i++)
	for(j=1;j<80;j++)
	{
		if(j>i)
		dp[i][j]=dp[i][i];
		else
		dp[i][j]=dp[i][j-1]+dp[i-j][j];
	}
    while(scanf("%d",&n)!=EOF)
    {
    	printf("%d\n",dp[n][n]-1);
    }
    return 0;
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题