您的位置:首页 > 其它

南邮 OJ 1222 序关系计数问题

2015-08-05 11:18 225 查看


序关系计数问题

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 128            测试通过 : 24 

比赛描述

用关系“<”和“=”将3个数A、B和C依序排列时有13 种不同的序关系:A=B=C,A=B<C,A<B=C,A<B<C,A<C<B,A=C<B,B<A=C,B<A<C,B<C<A,B=C<A,C<A=B,C<A<B,C<B<A。将n个数(1≤n≤50)依序排列时有多少种序关系。
编程计算出将n个数( 1≤n≤50)依序排列时有多少种序关系。

输入

输入多行,每一行提供一个数n。

输出

对应输入,依次输出多行,每一行输出种序关系数。

样例输入

3

样例输出

13

提示

 

题目来源

算法设计与实验题解

#include<iostream>
#define MAX_N 51

__int64 dp[MAX_N][MAX_N]; //dp[i][j]:i个数,有j个‘<’链接,共有多少种情况

int main(){
int n,i,j;
for(i=0;i<MAX_N;i++){
dp[i][0] = 1;
}
for(i=0;i<MAX_N;i++){
for(j=1;j<i;j++){
dp[i][j] = (j+1)*(dp[i-1][j]+dp[i-1][j-1]);
}
}
for(i=0;i<MAX_N;i++){
for(j=0;j<i;j++){
dp[i][i] += dp[i][j]; //dp[i][i]存放每一行的和
}
}
while(scanf("%d",&n)==1){
printf("%I64d\n",dp

);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息