本文主要是介绍hdu 一卡通大冒险[Bell数],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512
题目的意思:
n(n <= 2000)张不同的卡放在任意多的相同的数中,问共有多少种放法。
分析:
1.书的数量没有限制。也就是说,我们最多可以用到n本的书,即每本书放一张卡。这是最多占书量。
2.书的相同的。
3.n张卡是不同的。。
和zsj讨论了半天。。一看题解是Bell数。。表示对自己的知识面汗颜。。
特别学习了一下Bell数。。表示仍然需要努力学习。。想了解Bell数的戳--->http://blog.csdn.net/u011394362/article/details/40619031
学到目前,觉的这类需要区别那些物品是有差的,那些物品的没差的。。。可能随着学习的深入会有不同的认识。。不过,学习不就是这样吗??
Code:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;const int N = 2005;
const int mod = 1000;
int bell[N][N];//递推求解
void Bell()
{bell[1][1] = 1;for(int i = 2; i <= 2001; i ++){bell[i][1] = bell[i - 1][i - 1] % mod;for(int j = 2; j <= i; j ++)bell[i][j] = (bell[i][j - 1] + bell[i - 1][j - 1]) % mod;}
}int main()
{Bell();int T;scanf("%d", &T);while(T --){int x;scanf("%d", &x);printf("%d\n", bell[x + 1][1] % mod);}return 0;
}
---->
目前只会这中打表的方式。。希望以后会有学习更加便利的方法。。
这篇关于hdu 一卡通大冒险[Bell数]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!