实验一、棋盘覆盖问题
输入
测试数据有若干行,每行3个整数k,x,y,其中n=2k是棋盘的规模,(x,y)是特殊方格的位置坐标,(k>1)。
输出
对输入中的每个正整数k,第一行上先输出“Case #: n=”,接着输出n的值,其中#是测试数据的序号,从1开始。第2到第n+1行,输出对于规模为n=2k的棋盘的一个覆盖。在该棋盘覆盖中,同一个骨牌用3个相同的数字表示。各骨牌表示的数字从1开始编号。特殊方格用#表示。
输入样例
1 2 1
2 2 3
输出样例
Case 1: n=2
1 #
1 1
Case 2: n=4
1 1 2 2
1 5 # 2
3 5 5 4
3 3 4 4
实验报告要求:
1.先分析要点、写出动态方程
2.提供正确运行的程序,可处理若干组数据,加上必要的注释及运行结果截图。
3.设计、调试中的问题及实验体会。
要求:可根据自己情况进行优化,验收时根据完成情况评分
1、第一层次(基本要求),用数字形式输出一个棋盘覆盖如输出样例的形式。
2、第二层次(进阶要求),用图形处理软件输出棋盘覆盖,用颜色将各骨牌进行区分。
C++代码如下:
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int tile;
int board[100][100];
void chessBoard(int tr,int tc,int dr,int dc,int size){
if(size==1)
return;
int t=tile++;
int s=size/2;
//检查特殊方块是否在左上角棋盘中
if(dr<tr+s&&dc<tc+s)
chessBoard(tr,tc,dr,dc,s);
else
{
board[tr+s-1][tc+