UVA 991 Safe Salutations

题意:连接圆上的n对点,要求不要相交,Catalan数的应用,试想一下,如果任选一条的

如果使得线的一边的点数是奇数的话,那么我们显然是无法成功的,所以我们选择一条线后,线的两边都要是偶数个,例如n=4的时候,我们可以选择(0对,3对),(1对,2对),(2对,1对),(3对,0对)

#include <iostream>
#include <cstdio>
#include <cstdio>
#include <cmath>
using namespace std;
const int MAXN = 20;

int f[MAXN];

int main(){
    f[0] = f[1] = 1;
    f[2] = 2;
    for (int i = 3; i <= 10; i++)
        for (int j = 0; j < i; j++)
            f[i] += f[j]*f[i-j-1];
    
    int n,flag=0;
    while (scanf("%d",&n) != EOF){
        if (flag)
            printf("\n");
        else flag = 1;
        printf("%d\n",f[n]);
    }
    return 0;
}



你可能感兴趣的:(UVA 991 Safe Salutations)