zoukankan      html  css  js  c++  java
  • P1251 递推专练3

    递推专练3    
    描述 Description    
         圆周上有N个点。连接任意多条(可能是0条)不相交的弦(共用端点也算相交)共有多少种方案?
    输入格式 Input Format    
         读入一个数N。1<=N<=1000。
    输出格式 Output Format    
         由于结果可能很大,你只需要输出这个答案mod 12345的值。

    一个点只能有两个状态,要么连线,要么不连;所以让新加入的这个点和所有边连线,能将图分成两个部分,所以此时的方案数就是两个部分的累计和;还有一种情况是这个点不和任何点相连,所以要单独加上f[i - 1];

    #include <bits/stdc++.h>
    
    using namespace std;
    
    #define ll long long 
    #define INF 0x3f3f3f3f
    #define MAXN 1000010
    #define MAXM 5010
    
    inline int read()
    {
        int x = 0,ff = 1;char ch = getchar();
        while(!isdigit(ch))
        {
            if(ch == '-') ff = -1;
            ch = getchar();
        }
        while(isdigit(ch))
        {
            x = (x << 1) + (x << 3) + (ch ^ 48);
            ch = getchar();
        }
        return x * ff;
    }
    
    int n,f[MAXM];
    
    int main()
    {
        n = read();
        f[0] = 1; f[1] = 1;
        for(int i = 2;i <= n;++i)
        {
            for(int j = 0;j < i - 1;++j)
                f[i] = (f[i] + f[j] * f[i - j - 2]) % 12345; 
            f[i] = (f[i] + f[i - 1]) % 12345;
        }
        printf("%d
    ",f[n]);
        return 0;
    }
  • 相关阅读:
    第四章学习小结
    第三章学习小结
    第二章学习小结
    DS第五章学习小结
    DS第四章学习小结
    DS第三章小结
    第五章小结
    第四章小结
    第三章小结
    第二章小结
  • 原文地址:https://www.cnblogs.com/AK-ls/p/10495248.html
Copyright © 2011-2022 走看看