Description

If we connect 3 numbers with "<" and "=", there are 13 cases: 
1) A=B=C 
2) A=B<C 
3) A<B=C 
4) A<B<C 
5) A<C<B 
6) A=C<B 
7) B<A=C 
8) B<A<C 
9) B<C<A 
10) B=C<A 
11) C<A=B 
12) C<A<B 
13) C<B<A

If we connect n numbers with "<" and "=", how many cases then?

 

Input

The input starts with a positive integer P(0<P<1000) which indicates the number of test cases. Then on the following P lines, each line consists of a positive integer n(1<=n<=50) which indicates the amount of numbers to be connected. 
 

Output

For each input n, you should output the amount of cases in a single line. 
 

Sample Input

2
1
3
 

Sample Output

1
13

Hint

Hint  Huge input, scanf is recommended.

source:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=95378#problem/E

参考博客:http://blog.csdn.net/acm_ted/article/details/7439043

这道题需要存储的数比较大,需要存下“500!”这么大的数,c或者c++的大数不会写,java提供大数类,直接用比较方便,我现在不会,就先写下思路,以后写题

问题:输入字母个数n,用大于小于等于号把这些字母连接起来的所有情况数
   注意(A = B > C)和(C < B = A)是一样的
思路:因为等于是相互的,算作一种情况,所以可以把所有相等的数分为一堆,看作一个字符
   这样就只剩下大于和小于号了
    由于 A > B和B < A也是一样的,所以我们可以假设只有大于号或者小于号
    然后把所有的数排列一下就行了

   由于分的堆的数目和每堆中的数据个数都是未知的,我们无法直接下手算i个字母连接的情况数
   但是我们可以通过递推,由前一种情况逐步找到要找的情况
   num[i][j]表示i个数分了j堆的连接数
   那么num[i][j] =        //注意最终形成了j堆, 不妨设所有的堆都是用小于号链接的
           num[i-1][j-1]*j
                  //最后一个数独立形成一堆,num[i-1][j-1]表示在最后一个数加入之前的排列数
                  //那么最后一个数加入的时候,就有j个位置可以选择,所以乘以j
           +num[i-1][j]*j;
                  //最后一个数和前面某一堆中的数据相等,加最后一个数之前的情况数为num[i-1][j]
                  //最后一个数入的堆可能是j堆中的任意一个,所以乘以j
   其实找到状态转义方程都好说num[i][j] = (num[i-1][j-1] + num[i-1][j])*j;
   初始化:num[i][j]为0;num[n][1]都为1
   

     f(1, 1) = 1
   f(2, 1) = 1, f(2, 2) = 2;
   f(3, 1) = 1, f(3, 2) = 6, f(3, 3) = 6;
   ……
   f(n, 1) = 1, ………………………………………………………………………………f(n, n) = A(n, n);
   因为我们假设符号已经排好, 就把这些数填进去就行,所以我们只需要算这些数放置的方法数即可
   除了f(i, 1) = 1; f(i, i) = A(i, i) (1 <= i <= n)之外,其他数都是按照我们推倒出来的公式计算的

   因为n可能为500这样我们就需要存储n的阶乘,需要大数运算,看网上有人用java的大数类直接存的,
   现在我还不会,先把思路了写下来,以后做

  

递推,大数存储E - Order Count的更多相关文章

  1. Tiling(递推+大数)

    Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? Here is a sample tili ...

  2. Children’s Queue HDU 1297 递推+大数

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题目大意: 有n个同学, 站成一排, 要求 女生最少是两个站在一起, 问有多少种排列方式. 题 ...

  3. ACM学习历程—HDU1041 Computer Transformation(递推 && 大数)

    Description A sequence consisting of one digit, the number 1 is initially written into a computer. A ...

  4. 【hdoj_1865】1sting(递推+大数)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1865 本题的关键是找递推关系式,由题目,可知前几个序列的结果,序列长度为n=1,2,3,4,5的结果分别是 ...

  5. poj 2506 Tiling(递推 大数)

    题目:http://poj.org/problem?id=2506 题解:f[n]=f[n-2]*2+f[n-1],主要是大数的相加; 以前做过了的 #include<stdio.h> # ...

  6. ACM学习历程—HDU1023 Train Problem II(递推 && 大数)

    Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know  ...

  7. HDU1134/HDU1133 递推 大数 java

    Game of Connections Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. Buy the Ticket HDU 1133 递推+大数

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1133 题目大意: 有m+n个人去买电影票,每张电影票50元,  m个人是只有50元一张的,  n个人 ...

  9. UVA11375火柴(递推+大数)

    题意:       给你n根火柴,问你能组成多少种数字,比如3根可以组成1或者7,组成的数字中不能有前导0, 思路:       我们开一个数组,d[i]记录用i跟火柴可以组成多少种数字,则更新状态是 ...

随机推荐

  1. 【转】OpenCV与CxImage转换(IplImage)、IplImage QImage Mat 格式互转

    最近由于在项目中用到了Opencv库,但是为了更好的显示图像还是使用了Cximage库,它可以快捷地存取.显示.转换各种图像.Opencv库用于高级图像处理与识别.为了使Cximage图像与Openc ...

  2. bind和live

    <div> <ul> <li></li> <li></li> <li></li> <li>& ...

  3. 使用iscroll4可能会遇到的问题(转:记录)

    1.在iscroll4的滚动容器范围内,点击input框.select等表单元素时没有响应这个问题原因在于iscroll需要一直监听用户的touch操作,以便灵敏的做出对应效果,所以它把其余的默认事件 ...

  4. iOS 支持arm_64 和 x86_64 的OpenSSL 静态库(libcrypto.a, libssl.a)

    下载链接

  5. selenium 学习笔记 ---新手学习记录(2) 问题总结

    今天研究了下ie.chrome.firefox浏览器执行脚本 1.首先firefox下执行时,我是安装在d盘了,所以要更改路径 //如果火狐浏览器没有默认安装在C盘,需要制定其路径 System.se ...

  6. 什么是weblogic?安装步骤详解

    weblogic,就是用于java开发的web服务器. tomcat熟悉吧,跟tomcat一个作用,是比tomcat更具优势的web服务器. 安装:(转载) 1.提供安装文件网盘下载:链接处2.安装过 ...

  7. MB_CHANGE_DOCUMENT使用方法

    REFRESH IT_MSEG.             CLEAR IT_MSEG. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_MSEG      ...

  8. Windows Azure 即将更名

     今天我们宣布自2014 年4 月3 日起,WindowsAzure 将更名为Microsoft Azure.这一更名反映了Microsoft 的战略,并显示了Microsoft 专注于将Azur ...

  9. JavaScript 覆盖document.createElement 方法 解决window.close在火狐下不兼容问题)

    近期项目遇到了问题,有个asp.net web程序仅仅能在IE7 执行.如今xp都淘汰了,大家都用IE8-IE11,因此这个web app也须要升级 适应全部IE版本号.照成IE版本号不兼容的问题主要 ...

  10. Unity5.0 RPG角色扮演历险类游戏之 森林历险记

    http://v.youku.com/v_show/id_XMTI1MjEyNjc4MA==.html? from=y1.7-1.2