Вот такая простая комбинаторика, и никак не пойму с какого бока ее укусить.
2n солдат надо построить в 2 шеренги по росту. Причем i-тый солдат 1-й шеренги
должен быть выше i-того во 2-й шеренге. Сколькими способоми можно произвести
такое построение.
Роста у всех разные.
Даже программку написал.
Код:
#include <stdio.h>
#define NN 16
long F(int a, int b) // Кол-во способов, которыми можно заполнить первый ряд
// a солдатами, 2-ряд - b солдатами с соблюдением условий роста
{
if (a<=1 && b<=1) return 1;
if (b==0) return 1;
if (a==b) return F(a, b-1);
else return F(a-1, b) + F(a, b-1);
}
main()
{ int i;
for(i=2; i<NN; i++) {
printf("N=%2d Sp=%9ld\n", i, F(i, i));
}
}
А вот результат
Код:
N= 2 Sp= 2
N= 3 Sp= 5
N= 4 Sp= 14
N= 5 Sp= 42
N= 6 Sp= 132
N= 7 Sp= 429
N= 8 Sp= 1430
N= 9 Sp= 4862
N=10 Sp= 16796
N=11 Sp= 58786
N=12 Sp= 208012
N=13 Sp= 742900
N=14 Sp= 2674440
N=15 Sp= 9694845
Закономерности не видно...