c语言实现棋盘覆盖问题.doc

c语言实现棋盘覆盖问题.doc

ID:55550267

大小:42.50 KB

页数:2页

时间:2020-05-16

c语言实现棋盘覆盖问题.doc_第1页
c语言实现棋盘覆盖问题.doc_第2页
资源描述:

《c语言实现棋盘覆盖问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、棋盘覆盖问题问题描述:在一个2k×2k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。代码:#includeinttile=0;//整型变量,记录L型骨牌的数量intMatrix[100][100];//定义数据结构voidChessBoard(inttr,inttc,intdr,intdc,intsize){//tr和tc分别是棋盘左上角

2、方格的行号、列号;dr和dc分别是特殊方格的行号、列号if(size==1)return;intt=tile++;//L型骨牌号,初值为0ints=size/2;//分割棋盘if(dr

3、dr=tc+s)//用L型骨牌号覆盖右上角子棋盘ChessBoard(tr,tc,dr,dc,s);//特殊方格在此棋盘中else{//特殊方格不在此棋盘中用,t号L型骨牌覆盖左下角Matrix[tr+s-1][tc+s]=t;//覆盖本子棋盘中的其余方格ChessBoard(tr,tc+s,tr+s-1,tc+s,s);}if(dr>=tr+s&&dc

4、,t号L型骨牌覆盖右上角Matrix[tr+s][tc+s-1]=t;//覆盖本子棋盘中的其余方格ChessBoard(tr+s,tc,tr+s,tc+s-1,s);}if(dr>=tr+s&&dc>=tc+s)//用L型骨牌号覆盖右上角子棋盘ChessBoard(tr+s,tc+s,dr,dc,s);//特殊方格在此棋盘中else{//特殊方格不在此棋盘中用,t号L型骨牌覆盖左上角Matrix[tr+s][tc+s]=t;//覆盖本子棋盘中的其余方格ChessBoard(tr+s,tc+s,tr+s,tc+s,s);}}int

5、main(){intsize,r,c,row,col;//memset(Matrix,0,sizeof(Matrix));for(inti=0;i<=100;i++)//初始化为零{for(intj=0;j<=100;j++){Matrix[i][j]=0;}}scanf("%d",&size);//输入棋盘大小scanf("%d%d",&row,&col);//输入特殊方格位置ChessBoard(0,0,row,col,size);for(r=0;r

6、+){printf("%2d",Matrix[r][c]);}printf("");}return0;}输出结果:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。