zoukankan      html  css  js  c++  java
  • 杨氏矩阵与勾长公式

    杨氏矩阵又叫杨氏图表,它是这样一个矩阵,满足条件:

    (1)如果格子(i,j)没有元素,则它右边和上边的相邻格子也一定没有元素。 
    (2)如果格子(i,j)有元素a[i][j],则它右边和上边的相邻格子要么没有元素,要么有元素且比a[i][j]大。

    勾长公式。

    对于给定形状,不同的杨氏矩阵的个数为:n!/(每个格子的钩子长度加1的积)。 
    其中钩子长度定义为该格子右边的格子数和它上边的格子数之和。

    然后看看ACwing这题

    https://www.acwing.com/problem/content/273/

    代码如下

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll tmp[110],num[110];
    int main()
    {
        int n;
        while(cin>>n&&n)
        {
            memset(tmp,0,sizeof(tmp));
            for(int i=1;i<=n;i++)
            {
                cin>>num[i];
            }
            ll tot=0,t1=1,t2=1;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=num[i];j++)
                {
                    tmp[++tot]+=num[i]-j+1;
                    for(int k=i+1;k<=n;k++)
                    {
                        tmp[tot]+=(num[k]>=j);
                    }
                }
            }
            ll p;
            for(int i=1;i<=tot;i++)
            {
                t1*=i;
                t2*=tmp[i];
                p=__gcd(t1,t2);
                t1/=p;
                t2/=p;
            }
            cout<<t1/t2<<"
    ";
        }
        return 0;
    }
  • 相关阅读:
    MyBatis 自动关闭 session
    Sublime相关操作及配置
    CentOS yum换源并配置SSH
    SpringSecurity认证流程
    ES模块化的导入和导出
    Promise学习
    axios的使用
    SpringSecurity注解的使用
    Webpack笔记
    JAVA工具类
  • 原文地址:https://www.cnblogs.com/hh13579/p/11628501.html
Copyright © 2011-2022 走看看