找回密码
 欢迎注册
查看: 10117|回复: 4

[转载] 一道有趣的、老少皆宜的“迷宫”题

[复制链接]
发表于 2007-12-28 08:25:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
<TABLE class=t_table cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD>&nbsp;&nbsp;&nbsp;&nbsp;如右图,为一个 5x5 的正方形,但被“挖”去了一格(已用“<FONT color=#ff0000>■</FONT>”标记),还剩 24 格。<BR>&nbsp;&nbsp;&nbsp;&nbsp;从这 24 格中任选之一开始,请在最短的时间内连续遍历余下的方格。<U>要求</U>:<B>不重、不漏、不跳格、不走斜线</B>。<BR><IMG height=10 src="http://www.emath.ac.cn/image/bbs/line.gif" width=494 vspace=4 border=0> <BR><FONT color=#ff0000><B>注:</B></FONT>
<UL type=square>
<LI>该问题是我根据一“江湖骗子”的题目改编(1996 年春节期间)——版权归我个人所有!:)
<LI>该问题老少皆宜,大家不妨一试,并可推荐给亲朋好友。
<LI>当该贴点击次数在 40 次以上时,我将公布答案。</LI></UL></TD>
<TD width=125>
<TABLE style="BORDER-RIGHT: rgb(255,0,0) 2px dotted; BORDER-TOP: rgb(255,0,0) 2px dotted; BORDER-LEFT: rgb(255,0,0) 2px dotted; BORDER-BOTTOM: rgb(255,0,0) 2px dotted" borderColor=#0000ff height=120 cellSpacing=2 cellPadding=0 width=120 align=right border=2>
<COLGROUP>
<COL span=5 align=middle width="20%">
<TBODY>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD></TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD></TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD></TR>
<TR>
<TD></TD>
<TD></TD>
<TD align=middle bgColor=#ff0000></TD>
<TD></TD>
<TD></TD></TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
这个题目不难,具体解答以及该问题的背景请浏览我2001/10/11发在<A href="http://club.xilu.com/rd/msgview-950394-161.html" target=_blank>老“数学研发论坛”上的帖子</A>
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2007-12-28 13:21:24 | 显示全部楼层
貌似无解啊!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2007-12-28 13:22:02 | 显示全部楼层

如果这个程序没有BUG,那么无解

/*
    如右图,为一个 5x5 的正方形,但被“挖”去了一格(已用“■”标记),还剩 24 格。
    从这 24 格中任选之一开始,请在最短的时间内连续遍历余下的方格。要求:不重、不漏、不跳格、不走斜线。

EEEEE
EEEEE
EEEEE
EEOEE
EEEEE

*/

#include <iostream>

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;
}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2007-12-28 13:30:09 | 显示全部楼层
这确实是个无解的问题,在原贴上已有证明(证明过程亦通俗易懂),难得楼上用编程去验证。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2007-12-28 18:36:00 | 显示全部楼层
呵呵,应该增加正方形的大小,计算机估计就不行了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-27 02:11 , Processed in 0.043723 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表