HDU 1023 Train Problem II (卡特兰数,经典)
题意:
给出一个数字n,假设火车从1~n的顺序分别进站,求有多少种出站序列。
思路:
卡特兰数的经典例子。n<101,用递推式解决。需要使用到大数。n=100时大概有200位以下。
- #include <bits/stdc++.h>
- using namespace std;
- const int N=;
- vector<string> vect;
- void _mult(string num1, string num2, string &result )
- {
- reverse(num1.begin(),num1.end()); //反转
- reverse(num2.begin(),num2.end());
- result="";
- int i, j, re_int[]; //********这里的150是位数,根据需要可以增大或减小*********
- memset(re_int, , sizeof(re_int));
- for(i=; i<num1.length(); i++) //两串作乘法,结果存放于re_int数组中, 最多可达150位!
- for(j=; j<num2.length(); j++)
- re_int[i+j] += ((num1[i]-) * (num2[j]-));
- int jinwei=, zhi;
- for(i=; i<num1.length()+num2.length(); i++) //单独处理进位问题,上一步中的数组每个元素都有可能超过10的,所以没处理进位
- {
- zhi = re_int[i]+jinwei;
- re_int[i] = zhi%;
- jinwei = zhi/;
- }
- for(i=num1.length()+num2.length()-; i>=; i--) //将i打个标记,数组re_int的前面部分可能全0,要去掉
- if(re_int[i]!=) break;
- for(;i>=;i--) //将整型数组转成字符串
- result = result+(char)(re_int[i]+);
- if(result=="") //若结果还是空,乘法的结果是0?
- result="";
- }
- void div(char * src,int n,char *dest)
- {
- int len = strlen(src),i,k,t=,s=;
- bool flag = true; //商是否有了第一个有效位,防止商首部一直出现0
- for(i=,k=; i<len; i++)
- {
- t = s*+(src[i]-); //新余数
- if(t/n> || t==) //余数为0要修改商
- {
- dest[k++] = t/n+,s = t%n,flag = false;
- }
- else //不够除,修改余数
- {
- s = t;
- if(!flag) //商已经有有效位了,补零
- dest[k++] = '';
- }
- }
- dest[k]='\0';
- }
- void precal()
- {
- string s="";
- vect.push_back(s);
- vect.push_back(s);
- char c[], dest[];
- for(int i=; i<; i++)
- {
- string q1="",res;
- int a=*i-; //第一个括号
- while(a)
- {
- q1+=(a%+'');
- a/=;
- }
- reverse(q1.begin(),q1.end());
- _mult(q1,vect[i-],res); //乘法
- strcpy(c,res.c_str());
- div(c,i+,dest); //除法
- s=dest;
- vect.push_back(dest);
- }
- }
- int main()
- {
- //freopen("e://input.txt", "r", stdin);
- int n;
- precal();
- while(~scanf("%d", &n))
- cout<<vect[n]<<endl;
- return ;
- }
AC代码
HDU 1023 Train Problem II (卡特兰数,经典)的更多相关文章
- HDOJ 1023 Train Problem II 卡特兰数
火车进站出站的问题满足卡特兰数...卡特兰数的相关知识如下: 卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. ...
- HDU 1023 Train Problem II (大数卡特兰数)
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 1023 Train Problem II
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1212 Train Problem II Description As we all know the ...
- hdu1032 Train Problem II (卡特兰数)
题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能. (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...
- HDU 1023 Train Problem II( 大数卡特兰 )
链接:传送门 题意:裸卡特兰数,但是必须用大数做 balabala:上交高精度模板题,增加一下熟悉度 /************************************************ ...
- C - Train Problem II——卡特兰数
题目链接_HDU-1023 题目 As we all know the Train Problem I, the boss of the Ignatius Train Station want to ...
- HDU-1023 Train Problem II 卡特兰数(结合高精度乘除)
题目链接:https://cn.vjudge.net/problem/HDU-1023 题意 卡特兰数的应用之一 求一个长度为n的序列通过栈后的结果序列有几种 思路 一开始不知道什么是卡特兰数,猜测是 ...
- HDU 1023 Train Problem II 大数打表Catalan数
一个出栈有多少种顺序的问题.一般都知道是Catalan数了. 问题是这个Catalan数非常大,故此须要使用高精度计算. 并且打表会速度快非常多.打表公式要熟记: Catalan数公式 Cn=C(2n ...
- 1023 Train Problem II(卡特兰数)
Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Station want ...
随机推荐
- 支持DISTINCT的通用分页存储过程(SQL2005)
/****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...
- ZOJ2928 Mathematical contest in modeling(模拟退火)
连续两天学了一些numerical analysis的方法,昨天是学了一下三分,今天学了一下模拟退火.很早就听说了模拟退火在求费马点上的运用了,只知道一些大概,但是没有深入研究,碰到题目就卡壳了,现在 ...
- POJ 2041
#include <iostream> #include <string> #include <algorithm> using namespace std; st ...
- (3)VS2010+Opencv-2.4.8的配置攻略
这是windows平台上的东西,我为什么要写到安卓这一块呢 因为作者做的安卓方面的东西需要先在windows平台实现一下,所以就想写这篇东西,也参考了网上很多教程,不得不感叹,这些软件版本更新的太快. ...
- Debian - 设置MYSQL开机启动
设置MYSQL 首先拷贝mysql.server到/etc/init.d目录下命名为mysql # cp /自己的安装目录/mysql/share/mysql/mysql.server /etc/in ...
- 如何精通java技术
如何精通java技术 | 浏览:173 | 更新:2013-05-15 14:42 | 标签:java 对于一个程序员来说,精通JAVA可以说是他们的最高境界了.那么对于JAVA程序员来说,怎么才能精 ...
- threadlocal精髓是为每一个线程保证一个共享对象,保证一个,保证是同一个
threadlocal精髓是为每一个线程保证一个共享对象,保证一个,保证同一个线程中是同一个共享对象. 如果是静态变量是共享的话,那必须同步,否则尽管有副本,还是会出错,故C错
- DIV CSS设计时IE6、IE7、FF 与兼容性有关的特性(转载的)
在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! 所有浏览器 ...
- iOS App 唤醒另一个App
网上也有讲这块的,感觉讲得都不是很好.而且有一些细节根本没有讲清楚.这里重写整理一下相关知识点. 主要内容 URL Scheme 是什么? 项目中关键的配置 注意事项 URL Scheme 是什么? ...
- iOS开发--沙盒路径与操作文件
获取应用沙盒根路径: -(void)dirHome{ NSString *dirHome=NSHomeDirectory(); NSLog(@"app_home: %@",dirH ...