码迷,mamicode.com
首页 > 其他好文 > 详细

Permutation

时间:2015-11-04 17:43:04      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

Problem 3 Permutation (permutation.cpp/c/pas)

 

【题目描述】

将 1 到 N 任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。

问在所有排列中,有多少个排列恰好有K个“<”。

例如排列(3, 4, 1, 5, 2)

3 < 4 > 1 < 5 > 2

共有2个“<”

 

【输入格式】

N,K

 

【输出格式】

答案

 

【样例输入】

5 2

【样例输出】

66

【数据范围】

20%:N <= 10

50%:答案在0..2^63-1内

100%:K < N <= 100

思路:f[i,j]表示n为i,k为j时的序列数。

打了一张表发现规律了

 i/j

0

1

2

3

4

1

1

 

 

 

 

2

1

1

 

 

 

3

1

4

1

 

 

4

1

11(4*2+1*3)

11(i*3+4*2)

1

 

5

1

26(11*2+1*4)

66(11*3+11*3)

26(1*4+11*2)

1

6

1

57(26*2+1*5)

302(66*3+26*4)

302(26*4+66*3)

57(1*5+26*2)

=i+1)

f[i,j]:=f[i-1,j]*(j+1) + f[i-j,j-1]*((i+1)-(j+1)) (j从0开始)

ps:要使用高精加

 

Permutation

标签:

原文地址:http://www.cnblogs.com/liuxinyu/p/4936409.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!