关注
这是别人写的,可我的编译器变量必须在函数最前面定义啊
#include <stdio.h>
int tile = 1;//全局变量 骨牌编号
int Board[4][4];//棋盘
void ChessBoard(int tr,int tc,int dr,int dc,int size);
int main()
{
int i,j;
for(i=0; i<4; i++)
{
for( j=0; j<4; j++)
{
Board[i][j] = 0;
}
}
ChessBoard(0,0,2,3,4);
for( i=0; i<4; i++)
{
for( j=0; j<4; j++)
{
printf("%d", Board[i][j]);
}
printf("\n");
}
}
/**
* tr : 棋盘左上角的行号,tc棋盘左上角的列号
* dr : 特殊方格左上角的行号,dc特殊方格左上角的列号
* size :size = 2^k 棋盘规格为2^k*2^k
*/
void ChessBoard(int tr,int tc,int dr,int dc,int size)
{
if(size == 1)
{
return;
}
int t = tile++;//L型骨牌编号
int s = size/2;//分割棋盘
//覆盖左上角子棋盘
if(dr<tr+s && dc<tc+s)//特殊方格在此棋盘中
{
ChessBoard(tr,tc,dr,dc,s);
}
else//特殊方格不在此棋盘中
{
//用编号为t的骨牌覆盖右下角
Board[tr+s-1][tc+s-1] = t;
//覆盖其余方格
ChessBoard(tr,tc,tr+s-1,tc+s-1,s);
}
//覆盖右上角子棋盘
if(dr<tr+s && dc>=tc+s)//特殊方格在此棋盘中
{
ChessBoard(tr,tc+s,dr,dc,s);
}
else//特殊方格不在此棋盘中
{
//用编号为t的骨牌覆盖左下角
Board[tr+s-1][tc+s] = t;
//覆盖其余方格
ChessBoard(tr,tc+s,tr+s-1,tc+s,s);
}
//覆盖左下角子棋盘
if(dr>=tr+s && dc<tc+s)//特殊方格在此棋盘中
{
ChessBoard(tr+s,tc,dr,dc,s);
}
else//特殊方格不在此棋盘中
{
//用编号为t的骨牌覆盖右上角
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的骨牌覆盖左上角
Board[tr+s][tc+s] = t;
//覆盖其余方格
ChessBoard(tr+s,tc+s,tr+s,tc+s,s);
}
}
int t = tile++;//L型骨牌编号
int s = size/2;//分割棋盘
这两句我调到前面去就错了
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 从顶到拉给所有面过的公司评分 #
23526次浏览 192人参与
# 机械人春招想让哪家公司来捞你? #
357840次浏览 3109人参与
# 为了求职,我做过的疯狂伪装 #
13796次浏览 277人参与
# 校招笔试 #
1406次浏览 34人参与
# 职场破冰,你们都聊什么? #
8077次浏览 79人参与
# 晒晒你的中秋福利 #
15831次浏览 120人参与
# 大家实习每天都在干啥 #
89496次浏览 518人参与
# 你的公司给实习生发中秋礼物吗 #
2504次浏览 31人参与
# 机械笔面试考察这些知识点 #
10903次浏览 96人参与
# bilibili求职进展汇总 #
91549次浏览 820人参与
# 工作压力大怎么缓解 #
105664次浏览 1053人参与
# 秋招OC许愿 #
347642次浏览 2531人参与
# 广联达求职进展汇总 #
11466次浏览 50人参与
# 机械人怎么评价今年的华为 #
209427次浏览 1525人参与
# 宣讲会你有哪些意向不到的收获 #
1950次浏览 23人参与
# 聊聊这家公司值得去吗 #
561252次浏览 3717人参与
# 你面试被问到过哪些不会的问题? #
23640次浏览 848人参与
# 百度秋招提前批进度 #
151249次浏览 1772人参与
# 电网笔面经互助 #
47188次浏览 431人参与
# 秋招的嫡长offer #
33213次浏览 299人参与