1837 3行n列棋盘不同完美覆盖的计数
来源:互联网 发布:淘宝卡西欧卖表带吗 编辑:程序博客网 时间:2024/05/17 02:12
下学期同学们将学习组合数学课,组合数学也是计算机数学的重要组成部分。在下学期组合数学课的第一讲中,我们将会遇到一个有趣的计数问题:棋盘的完美覆盖。
考虑一张普通的国际象棋棋盘,它被分成 8 乘 8(8 行 8 列 ) 的 64 个方格。设有形状一样的多米诺牌,每张牌恰好覆盖棋盘上相邻的两个方格,即一张多米诺牌是一张 1 行 2列 或者 2 行 1列 的牌。那么,是否能够把 32 张多米诺牌摆放到棋盘上,使得任何两张多米诺牌均不重叠,每张多米诺牌覆盖两个方格,并且棋盘上所有的方格都被覆盖住?我们把这样一种排列称为棋盘被多米诺牌完美覆盖。这是一个简单的排列问题,同学们能够很快构造出许多不同的完美覆盖。但是,计算不同的完美覆盖的总数就不是一件容易的事情了。不过,同学们发挥自己的聪明才智,还是有可能做到的。
现在我们通过计算机编程对 3 乘 n 棋盘的不同的完美覆盖的总数进行计算,做为对下学期组合数学课的热身。
任务
对 3 乘 n 棋盘的不同的完美覆盖的总数进行计算。
- 输入
一次输入可能包含多行,每一行分别给出不同的 n 值 ( 即 3 乘 n 棋盘的列数 ) 。当输入 0 的时候结束。
n 的值最大不超过 100.
- 输出
针对每一行的 n 值,输出 3 乘 n 棋盘的不同的完美覆盖的总数。
- 样例输入
1
2
4
0
- 样例输出
0
3
11
模拟题,找到规律即可
#include <stdio.h>int main(){ unsigned long a[100] = { 3, 11 }; int i = 0; for( i = 2; i < 100; i++ ) a[i] = a[i-1] * 4 - a[i-2]; while( scanf( "%d", &i ) && i!=0) { if( i % 2 == 0 ) printf ( "%d\n", a[i/2-1] ); else printf( "0\n" ); } return 0;}
- 1837 3行n列棋盘不同完美覆盖的计数
- b牌棋盘完美覆盖
- 棋盘的完美覆盖问题,c++代码实现
- [组合数学]关于一类棋盘的完美覆盖问题
- 棋盘的完美覆盖(多米诺骨牌完美覆盖)&&幻方(魔方阵)
- 【年少的风】棋盘覆盖,用不同的颜色标记
- 【年少的风】棋盘覆盖,用不同的颜色标记
- N*N的棋盘
- HDU 5100 Chessboard 用 k × 1 的矩形覆盖 n × n 的正方形棋盘
- 对棋盘完美覆盖问题证明过程的质疑及其解决
- 对棋盘完美覆盖问题证明过程的质疑及其解决(续)
- hdu 1507 Uncle Tom's Inherited Land* (棋盘的完美覆盖问题)
- 骨牌覆盖问题三(k*N棋盘覆盖)
- F(n)完全覆盖中的计数问题
- java实现的棋盘覆盖
- 覆盖棋盘上的方格
- 多米诺牌的完美覆盖
- 2-3 棋盘覆盖 | 分治
- ODS介绍
- Android之文件操作和JUnit
- 1830 双塔问题
- 1836 永真公式的验证
- 虚拟服务器备份相互适应
- 1837 3行n列棋盘不同完美覆盖的计数
- valgrind使用手册
- win7系统:ireport启动报异常 java.lang.NullPointerException,java环境变量已经正确配置
- Delphi 的运算符列表
- windows搜索含有词组的文件
- flex 动态加载ImageMap
- jstree简单应用
- 异常处理机制
- 几种设置UITableView的cell动态高度的方法