过年这几天疫情严重,哈哈,想必各位在家也是闲得慌。 于是,玩了一款叫 “一笔画完” 的游戏打发时间,要求从起点一笔连接所有格子,不能重复,不能空格。 有些关卡还真是意想不到,于是想到能不能用计算机去帮我找路径,间接“开挂”,哈哈。 游戏界面截图如下:(其中一个关卡,用来测试程序) 废话不多说,来看代码:(vc++6.0写的) 代码说明:程序比较短,但实测是可以用的,还未发现不能通关的。主要利用的是穷举法。难度等级默认是6,如果超过了这个难度的可以更改#define L后面的值,上限127,因为定义的行列是char型。这里还用到了setjmp();跳转,与goto不同的是,setjmp();可实现函数间的跳转(具体使用方法其他博客上有,我就不说明了哈)。
#include
#include //用于setjmp跳转的头文件
#define L 6 //初始化行列数,上限127
char i,j,p; //p用于记录路径步数
jmp_buf buf;
unsigned char check();
void next_step (char,char);
/******路径迷宫,0:空白 1:待连路径 2:起点*******/
unsigned char a[L][L]={
0,0,1,0,0,0,
1,1,1,1,0,0,
1,1,0,1,0,0,
1,1,2,1,0,0,
1,1,1,1,0,0,
0,0,0,0,0,0,
};
void main()
{
/********筛选出起点并进行排查(以2为起点)********/
for(i=0;i
for(i=0;i |