B - Game of Connections

1、满足F(n)=f(0)*f(n-1)+f(1)*f(n-2).....f(n-1)*f(0)的都是卡特兰数,另外一种表示是h(n)=c(2n,n)-c(2n,n+1)(n=0,1,2,...);这个公式还可以更简单得化为h(n)=C(2n,n)/(n+1);其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796。

卡特兰数种经典题目:1、N个人有五元钱,N个人有十元钱,要买门票(五元每张)现在售票员没有零钱,有多少种买票的方法可以让售票员能不面临尴尬;

2、有n个数按1、2、3......n的顺序入栈,有多少种不同的出栈的方法;

3、n边形加把两点连接之后构成三角形,直线不能相交,有多少种加边的的方法;

卡特兰数的递推公式为:h(n)=h(n-1)*(4*n-2)/(n+1);

B - Game of Connections

This is a small but ancient game. You are supposed to write down the numbers 1, 2, 3, ... , 2n - 1, 2n consecutively in clockwise order on the ground to form a circle, and then, to draw some straight line segments to connect them into number pairs. Every number must be connected to exactly one another. And, no two segments are allowed to intersect.

It‘s still a simple game, isn‘t it? But after you‘ve written down the 2n numbers, can you tell me in how many different ways can you connect the numbers into pairs? Life is harder, right?

InputEach line of the input file will be a single positive number n, except the last line, which is a number -1. You may assume that 1 <= n <= 100.
OutputFor each n, print in a single line the number of ways to connect the 2n numbers into pairs.
Sample Input

2
3
-1

Sample Output

2
5源代码:#include <iostream>#include"cstring"using namespace std;const int maxn=300;int main(){    int N;    while(cin>>N)       {   if(N==-1)break;           int a[maxn][maxn],temp=0,len=1,sum1=0;           memset(a,0,sizeof(a));       a[0][0]=a[1][0]=1;        for(int i=2;i<=N;i++)        { int sum=0;          for(int j=0;j<len;j<j++)        {            sum=a[i-1][j]*(4*i-2)+temp;            a[i][j]=sum%10;            temp=sum/10;        }        while(temp)        {            a[i][len++]=temp%10;            temp/=10;        }        int m=0;        for(int k=len-1;k>=0;k--)        {            m=sum1+a[i][k];            a[i][k]=m/(i+1);            sum1=(m%(i+1))*10;        }        for(int j=len-1;;j--)            if(a[i][j]==0)len--;        else break;        }        //for(;;j--)           // if(a[N][j])break;        for(int i=len-1;i>=0;i--)            cout<<a[N][i];        cout<<endl;    }    return 0;}
时间: 2024-08-09 10:42:42

B - Game of Connections的相关文章

解决mysql 1040错误Too many connections的方法

1.可能是mysql的max connections设置的问题 2.可能是多次insert,update操作没有关闭session,需要在spring里配置transaction支持. 解决: 1.修改tomcat里的session 的time-out时间减少为20,(不是必改项) 2.对处理量大的对数据库insert或update的操作提供transaction支持. ======================================= 下面的是解决办法: com.mysql.jdb

Dynamics CRM 流程错误 simultaneous connections limit reached for organization error occured

有时候流程记录报的错误显示"simultaneous connections limit reached for organization error occured! " 重启异步服务或许有用,但是什么原因引起的呢? 原来在MSCRM_Config数据库的[DeploymentProperties]表里面有两个相关设置,限制同时连接数. SharedDBConnectionPoolPerOrgLimit' 和 'AsyncMaximumThreadsPerCPU' 它们的默认值如下图

Configure Security Settings for Remote Desktop(RDP) Services Connections

catalogue 1. Configure Server Authentication and Encryption Levels 2. Configure Network Level Authentication for Remote Desktop Services Connections 3. Configure Client Logon Information for Remote Desktop Services Connections 4. Configure Permission

hdu-2874 Connections between cities(lca+tarjan+并查集)

题目链接: Connections between cities Time Limit: 10000/5000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) Problem Description After World War X, a lot of cities have been seriously damaged, and we need to rebuild those cities. However, s

Windows 7下解决: java.net.SocketException: No buffer space available (maximum connections reached?)

查了一大堆网上的资料全都没用,Google得知,是Windows 7 的socket泄漏 : https://supportkb.riverbed.com/support/index?page=content&id=S23580&actp=LIST_RECENT 补丁下载地址:  http://support.microsoft.com/kb/2577795 记录一下. Windows 7下解决: java.net.SocketException: No buffer space avai

mysql数据库Too many connections 错误的解决过程记录

在做一个注册页面的时候,要用到ajax异步校验用户输入的信息是否正确,还得做用户名查重工作,所以需要频繁的访问数据库.我用的c3p0的一个操作数据库的utils是我自己在我看完学习视频之后做的,我做的utils和视频中做的不同的是:视频中做的utils是注册驱动.设置ComboPooledDataSource和获得connection分开,我做的是一个getConnection方法一步到位.平常使用数据库频率不高也就没发现什么问题,直到现在东窗事发...... 昨天出现了错误Too many c

java.sql.SQLException: Connections could not be acquired from the underlying database!

警告: [email protected]72 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30).java.sql.SQLException: Connectio

打开mysql时,提示 1040,Too many connections

打开mysql时,提示 1040,Too many connections,这样就无法打开数据库,看不了表里边的内容了. 出现这个问题的原因是,同时对数据库的连接数过大,mysql默认的最大连接数是100,我们可以在命令行方式下 查看最大连接数的值. mysqladmin -uusername -ppassword variables |find "max_con" 注意上面的命令中,-u和用户名之间,-p和密码之间没有空格. 我们可以通过以下方法修改数据库的最大连接数:(命令行方式)

mysql连接数太小,导致网站报错mysql:Too many connections

2017.9.14 一个网站上线前压力测试 网页打开报错mysql:Too many connections 一看就是mysql连接数设置过小导致的 进mysql查看连接数设置 show variables like '%max_connections%'; 只有151,怎么可以,果断决定提高到1000 PS:服务器性能可以的,哈哈 打开MySQL配置文件my.cnf添加 max_connections=1000  重启MySQL即可. 再次测试没问题咯! 方法二:命令行临时修改. set gl

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: &quot;Too many connections&quot;

最简单的办法是因为你的my.ini中设定的并发连接数太少或者系统繁忙导致连接数被占满解决方式:打开MySQL安装目录打开MY.INI找到max_connections默认是100 .--实例 WINDOWS解决mysql Errno.: 1040错误XXXX info: Can not connect to MySQL server User: rootTime: 2004-5-20 3:00pmScript: /XXXX/XXXX.PHP Error: Too many connections