棋盘覆盖问题c语言
美丽的名字-abac式的词语
实验报告
学
号
课
程
0107
名
算法分析与设计 实验
日期
实验情况
注
姓高行行 专业
班级
移动互联网14-01
实验
时间
8:00-
9:00
备
棋盘覆盖问题算法:
#include<>
int tile=1;
int
board[100][100];
void ChessBoard(int tr,int
tc,int dr,int dc,int size)
{
if(size==1)
return;递归边界
int t=tile++;L型骨牌号
int
s=size2;分割棋盘
覆盖左上角子棋盘
if(dr
ChessBoard(tr,tc,dr,dc,s);
else
{ 此棋盘中无特殊方格 ,用t号L型骨牌覆盖右下角
board[tr+s-1][tc+s-1]=t;
覆盖本子棋盘中的其余方格
ChessBoard(tr,tc,tr+s-1,tc+s-1,s);
}
覆盖右上角子棋盘
if(dr
特殊方格在此棋盘中
ChessBoard(tr,tc,dr,dc,s);
else
{特此棋盘中无特殊方格 ,t号L型骨牌覆盖左下角
board[tr+s-1][tc+s]=t;
覆盖本子棋盘中的其余方格
ChessBoard(tr,tc+s,tr+s-1,tc+s,s);
}
覆盖左下角子棋盘
if(dr>=tr+s&&dc
ChessBoard(tr+s,tc,dr,dc,s);
else
{此棋盘中无特殊方格 ,t号L型骨牌覆盖右上角
board[tr+s][tc+s-1]=t;
覆盖本子棋盘中的其余方格
ChessBoard(tr+s,tc,tr+s,tc+s-1,s);
}
覆盖右上角子棋盘
if(dr>=tr+s&&dc>=tc+s)
特殊方格在此棋盘中
ChessBoard(tr+s,tc+s,dr,dc,s);
else
{此棋盘中无特殊方格 ,t号L型骨牌覆盖左上角
board[tr+s][tc+s]=t;
覆盖本子棋盘中的其余方格
ChessBoard(tr+s,tc+s,tr+s,tc+s,s);
}
}
int main()
{
int size,r,c,row,col;
printf(输入棋盘大小:n
scanf(输入棋盘大小
printf(输入特殊方格位置:row,col n
scanf(输入特殊方格位置
ChessBoard(0,0,row,col,size);
printf(输出棋盘覆盖结果:n
for (r = 0; r < size;
r++)输出棋盘覆盖结果
{
for (c = 0; c <
size; c++)
{
printf(
}
printf(
}
return 0;
}
运行效果:
实验报告成
绩
老师
注:1)专业班级按打印课表中名称填写;2)课程名称按课表中名称填写,不能简写;
3)
实验日期格式示例:)实验时间格
式示例:“第三大节”5)实验情况包括任务(或题目)、解决方案(
或者代码)、结果等;6)
实验报告成绩按五级标准评分;
精心搜集整理,只为你的需要