• 答题卡


    链接:https://ac.nowcoder.com/acm/contest/5389/C
    来源:牛客网

    题目描述

    牛牛即将要参加考试,他学会了填答题卡。

    可惜他竖着的答题卡填成了横着的 : (

    好奇的他想知道对于 n 道题,每道题 n 个选项的答题卡 ( n * n 的矩阵 ),满足横答题卡和竖答题卡图形一致的方案数有多少种。

    注:每道题只能选择一个选项,即 n * n 的矩阵中只能涂黑 n 个空。求横竖对称的方案数。

    题解如下:

    显然n维矩阵是关于主对角线对称的,那么我们先固定左上角,矩阵剩下了(n-1)维矩阵,满足(n-1)维矩阵对称即可,然后选取第二行第一列、第三行第一列....、第n行第一列,根据对称原则,我们也要选取相应的第一行第二列、第一行第二列、....、第一行第n列,剩下(n-2)维矩阵,也使它对称,一共有(n-1)种情况。

    故规律是dp[n] = dp[n-1]+(n-1)*dp[n-2]

    code:

    #include <bits/stdc++.h>
      
    using namespace std;
    typedef long long ll;
    const int NMAX = 1e5 + 10;
    const int MOD = 1e9+7;
    ll a[NMAX];
    int main()
    {
        int n;
        scanf("%d",&n);
        a[1] = 1;a[2] = 2;a[3] = 4;
        for(register int i = 4;i <= n;i++)
            a[i] = (a[i-1]+(i-1)*a[i-2]%MOD)%MOD;
        printf("%lld
    ",a[n]);
        return 0;
    }
    View Code
  • 相关阅读:
    SSM整合redis
    正则表达式验证
    175. 组合两个表
    SQL高级教程2
    SQL高级教程1
    数据可视化
    SQL基础
    SQL函数
    数据分析
    python数据分析-连接mysql
  • 原文地址:https://www.cnblogs.com/lemon-jade/p/12817046.html
Copyright © 2020-2023  润新知