例如,对于N = 3。 排列是:
[1,3,2]
[2,3,1]
注意:[1,2,3]
和[3,2,1]
在此无效,因为[1,2,3]
会增加,但不会减少,反之亦然[3,2,1]
。
我在TCS CodeVita 2017中遇到了这个问题,他们甚至没有为此提供社论。
答案 0 :(得分:5)
N
N
的数字都可以分为两组:左和右。左侧组按升序排列,右侧组按降序排列。N
,所有剩余的数字将按降序排列。N
以外的所有数字。并且它既不能为空,也不能包含所有N-1
个数字。因此,答案是数字{1, 2, ..., N-1}
的子集数量减去两个角落情况。那是2^(N-1) - 2
。
答案 1 :(得分:1)
算法如下
答案是
(n-1)C1 +(n-1)C2 +(n-1)C3 +(n-1)C4 + ....(n-1)Cn-2 = 2 ^( n-1) - 2 // -2处理n-1C0和n-1Cn-1的情况