迷宫问题求错 c语言程序 程序代码如下 : 但程序总无输出

迷宫问题求错 c语言程序 程序代码如下 : 但程序总无输出,第1张

不太明白楼主的思路,a[][]是迷宫数据吧,怎么还能修改了?

今天有了点时间,看了下,知道怎么回事了。

先就题论题,说下解决方案:把 if(a[c[k][0]][c[k][1]]==1)改成 if(a[c[k][0]+b[i][0]][c[k][1]+b[i][1]]==1),有了解决方案,问题原因就很明白了,你应该是知道的,我不多说了。

然后再延伸下,说下楼主的算法:经过上面的修改后,程序是可以得到正确结果了,但那是因为这个迷宫比较简单,而不是因为算法是正确的,如果换一个稍微复杂点的迷宫,很可能它就又不会有输出了,下面详细说明,这是你原来的迷宫:

1,1,1,0,0,0

0,0,1,0,0,0

0,0,1,1,0,0

0,0,0,1,1,0

0,0,0,0,1,1

0,0,0,0,0,1

它只有一条路,而这条路是通的,所以你的算法可以顺利运行出结果,但是如果我把它修改成这样:

1,1,1,0,0,0

1,0,1,0,0,0

1,0,1,1,0,0

1,0,0,1,1,0

1,0,1,0,1,1

1,1,1,0,0,1

这样的迷宫里有两条路,一条是原来的那条通路,一条是死胡同,而你的算法会先去尝试那条死胡同,而且到了死胡同的尽头后会卡在最后两步来回重复,再也出不去了,这是你自己的算法,你自己应该能想明白,我就不说那么多了。

所以一个正确的算法应该去检测是否到了死胡同,如果是的话就应该沿原路回滚直到上次的岔路口,然后判断这个岔路口的每个分支是否都走过了,如果是就继续回滚到再上一次的岔路口,具体算法我现在没时间考虑了,你得靠自己了,如果实在不行可以给我留言,我有空再帮你想想。

c#界面绘制的时候,底层重绘每次会清除画布背景,然后再全部重新绘制,这才是导致闪烁最主要的原因。于是重载消息发送函数 *** 作,禁掉这条消息。代码如下:

protected override void WndProc(ref Message m)

{

if (mMsg == 0x0014) // 禁掉清除背景消息

return;

baseWndProc(ref m);

}

首先根据自己的需要和喜好,去素材网站下载ico图标,当然这些图标VB60不一定能够直接用。

开始--打开ArtIcons Pro软件。

打开的ArtIcons Pro软件界面如图所示:

“文件”--“打开”,d出打开对话框,选择所需修改的图标,单击“打开”按钮打开图标,在软件中显示出来。

在软件右侧,单击鼠标右键,选择“新图像”命令。

在打开的“新图像格式对话框”中按照VB60所需的ico图标格式进行设置:

大小选择48X48,颜色选择256色,其它默认,单击“确定按钮进行确认。”

此时按照刚刚制定的格式,生成了一个新图像:

"文件"--“导出”--“当前图像”,命名后保存。生成一个新图标如图所示:

随便打开一个VB60工程,将刚刚生成的图标加入到Form1的ico属性中:

在“文件”菜单下选择生成exe命令,在d出的生成工程对话框中按确定按钮,生成了一个心形图标,非常美观。想要生成自己喜欢的图标都可以参照以上方法。

以上就是关于迷宫问题求错 c语言程序 程序代码如下 : 但程序总无输出全部的内容,包括:迷宫问题求错 c语言程序 程序代码如下 : 但程序总无输出、C语言编程 迷宫问题(队列)、VB6.0制作迷宫程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9818624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存