社区
数据结构与算法
帖子详情
[请教] 给定起点和终点的坐标,如何产生一条随机的路径?
wyl1267
2006-02-20 09:30:48
请教一个编程问题:
在N*N的棋盘中,若给定起点和终点的坐标,如何产生一条随机的路径?
...全文
1263
55
打赏
收藏
[请教] 给定起点和终点的坐标,如何产生一条随机的路径?
请教一个编程问题: 在N*N的棋盘中,若给定起点和终点的坐标,如何产生一条随机的路径?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
55 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wyl1267
2006-03-13
打赏
举报
回复
你研究的问题都很深奥的,如迷宫,接龙,魔方之类的,不愧是北大出来的!
你还编过些什么游戏啊,能不能让我领略一下?
我最近的一个拙作发布在:
http://data.gameres.com/showmessage.asp?TopicID=47849
有兴趣进去看看,欢迎点评。
还有,你编的<人工智能用于游戏编程>一书出版了吗?哪里有买啊?
zzwu
2006-03-10
打赏
举报
回复
wyl1267(寒蝉) :
确实,这题没有想象的那样简单,尽管你的贴结了(谢谢你),我的贴还没有结,我准备把这一想法继续完善下去.
我现在暂时把此转换点的位置的事情搁一搁,先考虑如何随机产生点列.
可以有2种办法:
1. 一种是使所有点不在相同行相同列,这样,如果是n*n点阵,只能允许布置n个点.
2. 另一种是使所有点不在已布线上即可,这就可以产生更多的点了.
第一种方法我已经编好了程序,现正在编第二钟方案.
我以前在北大读过书,现在已不在北大了.
我前面提到的方案都是晚上睡在床上考虑的,化的时间可能主要是编写贴子的时间(图不好画).
zzwu
2006-03-10
打赏
举报
回复
下面是我不久前提问的2个游戏算法问题:
http://topic.csdn.net/T/20050613/15/4078974.html
http://community.csdn.net/Expert/topic/4535/4535995.xml?temp=.388653
zzwu
2006-03-10
打赏
举报
回复
我讲的第二种方法就是:在随机产生新点时,要避开已占有连线的那些位置.
而第一种方法则要避开已布点的整个行和列,即使不占满行或列,也不再加新点.
我想,这种想法和你的思想也差不多.
我也喜欢编游戏玩,我以前遍过一些游戏,感到困难的也是算法问题.
我已经在CSDN上提问过一些算法问题.
wyl1267
2006-03-10
打赏
举报
回复
zzwu(未名):
你的第1种方法好象有局限性,第2种我还不很明白。
刚才我倒忽然想出了一个方法,你看行不行:
和随机产生点列的方法想反,在方阵中随机布置一些“禁区”或叫作“障碍”,“禁区”的大小不一,也是随机的。从起点至终点必须绕开“禁区”,这样可采用路径搜索如A*算法来实现。这只是一个设想,没有试过。
看了你发的贴和一些回复,好象都是有关算法的,其实编程的核心问题就是算法问题,也是编程的难点所在,是吗?
我原来是学电子专业的,后来对编程也挺感兴趣,在业余时间编过几个小游戏(不知你对这玩艺儿有没有兴趣?),也曾为算法问题所困惑,由于我完全是靠自学的,周围也没有编程问题的讨论环境,正在想找人交流探讨一下这方面的思路。
在贴子里表达起来毕竟有限,图象和文件等都不能传送,以后方便的话可以发email给我。
zzwu
2006-03-08
打赏
举报
回复
[答]
Ytemp=Y6,
Y6=Y5,
Y5=Y4,
Y4=Y2,
Y2=Y1,
Y1=Y3=Ytemp
zzwu
2006-03-08
打赏
举报
回复
其实,只要弄清了前面的修改思想,这一问题也不难.
wyl1267
2006-03-08
打赏
举报
回复
zzwu(未名):
看来这题没有想象的那样简单,有待进一步讨论,不管方案是否可行,很佩服你的钻研精神,你为这道题花了很多时间吧?
你现在是学生吗,我猜是北大的吗?
也感谢楼上各位提供思路,本贴将要结贴,以后可发Email给我:wyl1267[AT]tom[DOT]com ([AT]= @, [DOT]=. ) ,欢迎来信继续讨论!
zzwu
2006-03-07
打赏
举报
回复
如再来一个P6:
,0*****,,,,,,,,,,,
,,,,,,*,,6,,,,,,,,
,,,,,,*,,*,,,,,,,,
,,****1,,*,3*****,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,2*********,,,,*,
,,,,,,,,,*,,,,,,*,
,,,,,,,,,*,,,,,,*,
,,,,,,,,,*,,,,,,*,
****************4,
*,,,,,,,,*,,,,,,,,
5*********,,,,,,,,
则要这样改:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,6,
,,,,,,*,,,,,,,,,*,
,,****1,,3**,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,2*******,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
***********4,,,,*,
*,,,,,,,,,,,,,,,*,
5****************,
即:X6=X4, X4=X3, X3=X6
zzwu
2006-03-07
打赏
举报
回复
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,,,,,*,,,,*,,,,4
,,,,,,*,,,,*,,,,,
,,****1,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*, ,,,,
,,2*********,,,,,
,,,,,,,,,,,,,,,,,
5 ,,,,,,,,,,,,,,,,
改成这样:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,****1,,,,3*****,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,2*********,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,,,,,*,
****************4,
*,,,,,,,,,,,,,,,,,
5,,,,,,,,,,,,,,,,,
即Y4=Y2, Y2=Y1, Y1=Y3
zzwu
2006-03-07
打赏
举报
回复
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,,,,,*,,,,*,,,,4
,,,,,,*,,,,*,,,,,
,,****1,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*, , , , ,
,,2*********, , , , ,
,,,,,,,,,,,,, , , , ,
5 ,, ,,,,,,,,,, , , , ,
改成这样:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,****1,,,,3*****,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,*,,,,,,,,*,,,,*,
,,2*********,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,,,,,*,
,,,,,,,,,,,,, , , , *,
****************4,
*,,,,,,,,,,,, , , , ,
5,, ,,,,,,,,,, , , , ,
即Y4=Y2, Y2=Y1, Y1=Y3
zzwu
2006-03-07
打赏
举报
回复
难题来了:在
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,6,
,,,,,,*,,,,,,,,,*,
,,****1,,3**,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,*,,,,,,*,*,,,,*,
,,2*******,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
,,,,,,,,,,,*,,,,*,
***********4,,,,*,
*,,,,,,,,,,,,,,,*,
5****************,
的基础上,如何加下面的P7:
,0*****,,,,,,,,,,,
,,,,,,*,,,,,,,,,,,
,,,,⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕6,
,,,,⊕,*,,,,,,,,,*,
,,**⊕*1,,3**,,,,*,
,,*,⊕,,,,*,*,,,,*,
,,*,⊕,,,,*,*,,,,*,
,,*,⊕,,,,*,*,,,,*,
,,2*⊕*****,*,,,,*,
,,,,⊕,,,,,,*,,,,*,
,,,,⊕,,,,,,*,,,,*,
,,,,⊕,,,,,,*,,,,*,
****⊕******4,,,,*,
*,,,⊕,,,,,,,,,,,*,
5***⊕************,
,,,,⊕,,,,,,,,,,,,,
,,,,⊕,,,,,,,,,,,,,
,,,,7,,,,,,,,,,,,,
zzwu
2006-03-06
打赏
举报
回复
最后一步仅仅是把P2与P4两个点的y分量对换一下而已.
zzwu
2006-03-06
打赏
举报
回复
接前面,我向前再看一步:
第3点:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,2***+*****
,,*,,,*,,,,,
,,*,,,*,,,,,
,,*,,,*,,,,,
,,****1,,,,,
,,,,,,,,,,,,
相交了,改为下面的路线:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,****1,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,2*********
,,,,,,,,,,,,
加入第4点:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,****1,,,,*,,,,*
,,*,,,,,,,,*,,,,*
,,*,,,,,,,,*,,,,4
,,*,,,,,,,,*
,,2*********
,,,,,,,,,,,,
加入第5点:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,****1,,,,*,,,,*
,,*,,,,,,,,*,,,,*
****************4
*,*,,,,,,,,*,,,,,
*,2*********,,,,,
*,,,,,,,,,,,,,,,,
5,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
与前面线段相交了,改为下面的路线:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,*
,,****1,,,,*,,,,*
,,*,,,,,,,,*,,,,*
,,2*********,,,,*
,,,,,,,,,,,,,,,,*
****************4
*,,,,,,,,,,,,,,,,
5,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
修改时,要保证点的数目不变,点的位置要变,但新点的坐标都
是利用已有点的坐标“重组”得到。
现在,问题变成:寻找新点和原有点的坐标的关系。
wyl1267
2006-03-06
打赏
举报
回复
,0*****,,,,,,,,,,
,,,,,,*,,,,,,,,,,
,,,,,,*,,,,3*****
,,,,,,*,,,,*,,,,4
,,****1,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*,,,,,
,,*,,,,,,,,*, , , , ,
,,2*********, , , , ,
,,,,,,,,,,,,, , , , ,
5 ,, ,,,,,,,,,, , , , ,
如果第4点在上面的位置怎么办啊?
zzwu
2006-03-06
打赏
举报
回复
而前面加P3时的修改,仅仅是把P1与P2两个点的y分量对换一下而已.
寻开心
2006-03-03
打赏
举报
回复
“每加入一点,就画对应的一根“水平+垂直”线,并立刻处理掉这一“水平+垂直”线与已有线的相交”
这个可不一定很容易就实现,也许要绕很多弯才可以达到的
这个在某种程度上等同于,走迷宫了, :)
假设你的迷宫设好了,我把A点放在迷宫的入口,B点放在迷宫的出口
你的处理线的方法,就等同于走迷宫的算法啦
zzwu
2006-03-02
打赏
举报
回复
我也在考虑中,我的想法是:
每加入一点,就画对应的一根“水平+垂直”线,并
立刻处理掉这一“水平+垂直”线与已有线的相交,
这样一来,以后就永远不会复杂情况了。
问题剩下2个:
1. 如何防止随机产生的新点、新线不与原来的重合?
2. 新点、新线与原来的点、线有多次相交如何处理?
我认为,
要解决1,必须对新点的随机产生方法有所限制。
要解决2,原则上是:遇到交点时,一个一个地处理。
wyl1267
2006-03-01
打赏
举报
回复
上述的处理方法只是对一个个例,遇到复杂的情况怎么办?
有没有通用的处理算法?
zzwu
2006-03-01
打赏
举报
回复
抱歉,上面图中点的标识方法错了,点的个数只有3个,
从一点到其下一点,总是先走水平再走垂直,如下:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,2***+*****
,,*,,,*,,,,,
,,*,,,*,,,,,
,,*,,,*,,,,,
,,****1,,,,,
,,,,,,,,,,,,
更合理的修改方式,是改为下面的路线:
,0*****,,,,,
,,,,,,*,,,,,
,,,,,,*,,,,3
,,,,,,*,,,,*
,,****1,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,*,,,,,,,,*
,,2*********
,,,,,,,,,,,,
这样,点的总数保持不变,而且,虽然一些点的位置改变了,但
这些新点的坐标分量都是利用原有点的坐标分量交换得到的。
加载更多回复(35)
利用回溯法求素数环c语言,P1605 迷宫 dfs回溯法
题目背景迷宫 【问题描述】
给定
一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。
给定
起点
坐标
和
终点
坐标
,问: 每个方格最多经过1次,有多少种从
起点
坐标
到
终点
坐标
的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证
起点
上没有障碍。输入样例 输出样例【数据规模】1≤N,M≤5题目描述输入输出格式输入格式:【输入】第一行N、M和T,N为行,M为列,T为障碍总数。第二行
起点
坐标
SX...
上帝掷骰子吗--量子物理史话
上帝掷骰子吗--量子物理史话 第一章黄金时代 一 我们的故事要从1887年的德国开始。位于莱茵河边的卡尔斯鲁厄是一座风景秀丽的城市,在它的城中心,矗立着著名的18世纪的宫殿。郁郁葱葱的森林和温暖的气候也使得这座小城成为了欧洲的一个旅游名胜。然而这些怡人的景色似乎没有分散海因里希?鲁道夫?赫兹(Heinrich Rudolf Hertz)的注意力:现在他正
个人的选择与历史的进程
今天看到华为天才少年李博杰的分享,讲述了自己从初中、高中、大学、MSRA、华为等一路选择的心路历程,以及个人的选择和历史进程之间的奇妙关系,相信对于迷茫中的你会有莫大的帮助。作者:李博杰链接:https://zhuanlan.zhihu.com/p/647970514进NLP群—>加入NLP交流群近日,几位好友找我聊起他们的选择。“一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的进程”...
全网最全 数据结构 代码
分析:首先,我们要搞明白,原始的算法为啥这么慢呢?因为它在一遍一遍的遍历s和t,做了很多重复工作,浪费了一些我们本该知道的信息。大大降低了效率。比如t长度为10,s匹配到位置5,如果t一直匹配到了t[8],到[9]才匹配错误,那s已经匹配到了位置14,下一步怎么做呢?接着从位置6开始,和t[0]开始匹配,而s位置6和t[0]甚至后面很大一部分信息我们其实都遍历过,都知道了,原始算法却还要重复匹配这些位置。所以效率极低。
十万字全网最全数据结构代码
本文代码实现基本按照《数据结构》课本目录顺序,外加大量的复杂算法实现,一篇文章足够。能换你一个收藏了吧?
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章