- 注册时间
- 2007-12-26
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 12450
- 在线时间
- 小时
|
发表于 2007-12-28 13:22:02
|
显示全部楼层
如果这个程序没有BUG,那么无解
/*
如右图,为一个 5x5 的正方形,但被“挖”去了一格(已用“■”标记),还剩 24 格。
从这 24 格中任选之一开始,请在最短的时间内连续遍历余下的方格。要求:不重、不漏、不跳格、不走斜线。
EEEEE
EEEEE
EEEEE
EEOEE
EEEEE
*/
#include
using namespace std;
long dir[]={-1, 1, -7, 7};
long map[]=
{
1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 1, 0, 0, 1,
1, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1,
};
long count;
long way[25];
void go(long pos)
{
if(map[pos] != 0)
{
return;
}
map[pos]=1;
way[count]=pos;
count++;
if(count == 24)
{
cout << "Find a way!" << endl;
}
for(long i=0; i < 4; i++)
{
go(pos + dir[i]);
}
count--;
map[pos]=0;
}
int main()
{
for(long i=0; i < 49; i++)
{
count=0;
go(i);
}
return 0;
} |
|