您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页ural 1017

ural 1017

来源:暴趣科技网

题意:有N 块砖头,问可以组成多少种楼梯,条件是楼梯至少为两层,每层的数量也不能相等,题解和划分数很相似。dp 思想的一道题,转移方程很难想,想了解如何想出的状态转移方程的,请移步这个牛人的博客:http://www.cnblogs.com/skyivben/archive/2009/03/02/1401728.html

dp[k][i] 表示数k 的最小被加数不小于k 的划分的个数。

#include <stdio.h>
#include <string.h>
#define Max 505
#pragma warning(disable:4996)

__int dp[Max][Max];

int main()
{
	int n, k;
	while (~scanf("%d", &n))
	{
		memset(dp, 0, sizeof(dp));
		for (int  i = 1; i <= n; i++)
			dp[i][i] = 1;
		for (int i = 2; i <= n; i++)
		{
			for (k = i - 1; k >= 1; k--)
				dp[k][i] = dp[k + 1][i - k] + dp[k + 1][i];
		}
		printf("%Id\n", dp[1][n] - 1);
	}
	return 0;
}


因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务