棋盘覆盖问题的分治法#include #define N 4 int tile=0; /*L型骨牌的编号*/ int board[N][N]; void ChessBoard(int k,int tr,int tc,int dr,int dc) { int t,s; if(k==1) return; t=tile++; s=k/2; /* Left-up 覆盖左上角子棋盘*/ if(dr=tc+s) /*特殊方格在此棋盘中*/ ChessBoard(s,tr,tc+s,dr,dc); e...
#include
#define N 4 int tile=0; /*L型骨牌的编号*/ int board[N][N]; void ChessBoard(int k,int tr,int tc,int dr,int dc) { int t,s; if(k==1) return; t=tile++; s=k/2; /* Left-up 覆盖左上角子棋盘*/ if(dr=tc+s) /*特殊方格在此棋盘中*/ ChessBoard(s,tr,tc+s,dr,dc); else /*特殊方格不在此棋盘中*/ { /*Left-down 用L型骨牌覆盖左下角*/ board[tr+s-1][tc+s]=t; /*覆盖其余方格*/ ChessBoard(s,tr,tc+s,tr+s-1,tc+s); } /* Left-down 覆盖左下角子棋盘*/ if(dr>=tr+s&&dc=tr+s&&dc>=tc+s) /*特殊方格在此棋盘中*/ ChessBoard(s,tr+s,tc+s,dr,dc); else /*特殊方格不在此棋盘中*/ { /*Left-up 用L型骨牌覆盖左上角*/ board[tr+s][tc+s]=t; /*覆盖其余方格*/ ChessBoard(s,tr+s,tc+s,tr+s,tc+s); } } void main() { int k,dr,dc,tr=0,tc=0,i,j; k=N; printf("请输入特殊方格所在的行号(从0开始)\n"); scanf("%d",&dr); printf("请输入特殊方格所在的列号(从0开始)\n"); scanf("%d",&dc); ChessBoard(k,tr,tc,dr,dc); for(i=0;i
本文档为【棋盘覆盖问题的分治法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。