中易网

C语言扫雷点到空白地方一次打开一大片的算法求解

答案:2  悬赏:60  
解决时间 2021-01-21 06:14
C语言扫雷点到空白地方一次打开一大片的算法求解
最佳答案
能把代码再多给点吗?
那8个递归其实可以用两个for来做的
void ClickBlank(int x, int y) {
int i, j;
if (isBlank(x, y)) {
ShowAroundBlock(x, y);
for (i = -1; i <= 1; i++) {
for (j = -1; j <= 1; j++) {
if (i == 0 && j == 0) continue;
ClickBlank(x + i, y + j);
}
}
}
} 而且你应该设访问标记,已经ClickBlank的格子不应再调用ClickBlank

追问:
这里代码写的比较乱长的那一部分是打印周围八个格子数字下面是递归可是每次沿着一个方向递归完后不会进入下一个方向的递归不知道该怎么写整个游戏的代码?还是只要这个部分的代码?
追答:这个部分好了,如果还不行,我再问你拿全部
追问:

追答:嗯,我觉得就是因为你没有标记,所以进入无限递归了
追问:那我再去加上看一下
追答:嗯,还有其他问题可以继续问我,我私信给你了
追问:果然就是这个原因刚才去加上时候好了
谢谢大神哦,我关注你啦,以后有不会的继续问你哦
全部回答
const int dx[8]={0,0,1,1,1,-1,-1,-1},
dy[8]={1,-1,1,0,-1,1,0,-1};
void ClickBlank(int x,int y){
int i;
showthis(x,y);//只显示这个格子
if(!IsBlank(x,y))return;
else for(i=0;i<8;i++)
if(ok(x+dx[i],y+dy[i]))//如果不越界
ClickBlank(x+dx[i],y+dy[i]);//递归
return ;}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
武汉a2多少钱一分
比秒小十倍的是
霍金究竟知道什么
产检项目及费用是多少?怎么才能报销这笔费用
如何评价电视剧 《火舞黄沙》
正常人一天大便几次,什么颜色的
台式电脑处理器能换吗
A删了B的微信,B没有删A,A通过群能看到B所有
红砖房是什么年代的住宅建筑
彩虹照相馆(纬北路)地址好找么,我有些事要过
途远广告印务地址在什么地方,想过去办事
中国移动怎么开通国际漫游?
香港去 澳门 怎么走
听说智樽宝这个平台可以自己当掌柜?
当你在CSGO里拥有了刀是什么感觉
推荐资讯
背心正对心窝处疼痛是怎么回事
性欲强的女人有哪些外在特征?怎么判断一个女
联通丽岛华都营业厅地址有知道的么?有点事想
冬天 家里干燥 暖气太热怎么办
离职后城镇户口能提取公司交的住房公积金吗?
浙江慈溪市燕羽皇电热水龙头好吗?有网友知道
求百事之荣,不如免一事之辱 什么意思
你们如何看待社区工作这一职业?
宝宝的衣服在什么网站买好看?宝宝的衣服在什
鼻甲肥大和鼻息肉用洗鼻的方法效果好吗?
问下大家入户门对卫生间墙好不好啊?
西安工程保洁公司哪家的服务最好?求大神推荐
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?