まずは愚直な方法で解いてみて、結果から法則を読み取ってみてはいかがでしょうか。
すべての順列から条件に合うものを数えると(ついでに該当の順列を表示)、以下のようになります。
python
1import itertools
2
3a = [1,2,3,4]
4count = 0
5for p in itertools.permutations(a):
6 if all(sum(p[j] > p[i] for j in range(i)) <= 1 for i in range(2, len(p))):
7 print(p)
8 count += 1
9
10print(count)
こちらの実行結果は以下のようになります。
text
1(1, 2, 3, 4)
2(1, 2, 4, 3)
3(1, 3, 2, 4)
4(1, 4, 2, 3)
5(2, 1, 3, 4)
6(2, 1, 4, 3)
7(3, 1, 2, 4)
8(4, 1, 2, 3)
98
この並びを見て、法則を見いだせないでしょうか。
最大の数の位置が同じものを並べると、より分かりやすいかもしれません。
text
1(1, 2, 3, 4)
2(2, 1, 3, 4)
3(1, 3, 2, 4)
4(3, 1, 2, 4)
5
6(1, 2, 4, 3)
7(2, 1, 4, 3)
8
9(1, 4, 2, 3)
10
11(4, 1, 2, 3)