zoukankan      html  css  js  c++  java
  • 答题卡

    链接: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
  • 相关阅读:
    【POJ】1204 Word Puzzles
    【POJ】1816 Wild Words
    【HDOJ】1247 Hat’s Words
    【HDOJ】2609 How many
    【POJ】1035 Spell checker
    【POJ】2418 Hardwood Species
    【POJ】1056 IMMEDIATE DECODABILITY
    数列有序!
    绝对值排序
    C语言合法标识符
  • 原文地址:https://www.cnblogs.com/lemon-jade/p/12817046.html
Copyright © 2011-2022 走看看