青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
C大調(diào)如歌的行板
我也來(lái)發(fā)明山楂車(chē)輪
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆 - 32 文章 - 94 trackbacks - 0
<
2025年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(8)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
C++(4)
鋼琴(8)
其他(9)
算法(6)
圖形學(xué)(13)
游戲編程(9)
隨筆檔案
2014年2月 (1)
2013年11月 (1)
2013年5月 (1)
2013年1月 (1)
2012年12月 (1)
2012年11月 (1)
2012年8月 (1)
2012年2月 (2)
2011年10月 (1)
2011年5月 (1)
2011年4月 (2)
2011年3月 (1)
2010年12月 (1)
2010年6月 (1)
2010年2月 (1)
2010年1月 (4)
2009年10月 (3)
2009年9月 (1)
2009年8月 (2)
2009年7月 (2)
2009年6月 (3)
好友連接
大學(xué)同班大牛人CK
大學(xué)同宿大牛人vczh
搜索
最新評(píng)論
1.?re: 之前做的LOD動(dòng)態(tài)地形
@kk
沒(méi)錯(cuò)啊,直接在vs里面依據(jù)高度圖重新計(jì)算頂點(diǎn)高度
--陳昱(CY)
2.?re: 之前做的LOD動(dòng)態(tài)地形[未登錄](méi)
大神,何詠說(shuō)的“一般都是分塊之后直接在GPU上面搞Displacement ”,什么是Displacement啊。Displacemen mapping 么?
--kk
3.?re: 肖邦練習(xí)曲《離別》
多去鋼琴有關(guān)的論壇交流~@溪流
--陳昱(CY)
4.?re: 肖邦練習(xí)曲《離別》
@陳昱(CY)
仰慕~~
拜厄前50條水平,有空請(qǐng)多多指教!
--溪流
5.?re: 肖邦練習(xí)曲《離別》
鋼琴年齡比編程還長(zhǎng)好多的說(shuō)~~@溪流
--陳昱(CY)
閱讀排行榜
1.?shader toy 上練習(xí),畫(huà)了個(gè)baby grand piano(4858)
2.?(原創(chuàng))宇宙10個(gè)維度的一句話(huà)理解(3419)
3.?喬治·溫斯頓的C大調(diào)《卡農(nóng)》(3418)
4.?肖邦練習(xí)曲《牧羊人的笛子》(3369)
5.?李斯特《愛(ài)之夢(mèng)》(3295)
評(píng)論排行榜
1.?之前做的LOD動(dòng)態(tài)地形(10)
2.?多點(diǎn)觸摸的GUI?(10)
3.?一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章)(9)
4.?一個(gè)想法,實(shí)習(xí)n維立方體!!! (結(jié)束)(9)
5.?一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影!!!(1)(8)
以前寫(xiě)的一個(gè)N連看
這一周,我寫(xiě)好了一個(gè)連連看,在設(shè)計(jì)連連看的算法的過(guò)程中,我設(shè)計(jì)了一個(gè)可以控制連數(shù)的連連看算法,并把連連看改成了“
n
連看”,然后經(jīng)過(guò)算法優(yōu)化,使我的連連看算法在
20
連、無(wú)解、矩陣是
13*11
、最壞情況(一個(gè)周?chē)諘纾粋€(gè)被包圍)下,運(yùn)算速度僅
2
秒左右。而經(jīng)過(guò)優(yōu)化之前,到了
6
連的最壞情況下就已經(jīng)慢得無(wú)法接受了。
基本的算法是這樣的:
先寫(xiě)一個(gè)函數(shù)
f1
,判斷點(diǎn)
1
和點(diǎn)
2
能否經(jīng)過(guò)某個(gè)方向直線(xiàn)到達(dá),方向有上、下、左、右四種
再寫(xiě)一個(gè)函數(shù)
f2
用于循環(huán)遞歸調(diào)用
f1
,思路是:如果起始點(diǎn)通過(guò)直線(xiàn)到達(dá)不了目標(biāo)點(diǎn),就把起始點(diǎn)可以直線(xiàn)到達(dá)的每個(gè)點(diǎn)當(dāng)成下一次調(diào)用的起始點(diǎn),直到找到目標(biāo)點(diǎn)就立即返回。
f2
的參數(shù)包括:
n
連:用來(lái)控制遞歸深度;
2
個(gè)點(diǎn)(起始點(diǎn)和目標(biāo)點(diǎn)),用來(lái)判斷能夠經(jīng)過(guò)
n
連連接的
2
個(gè)點(diǎn);
判斷當(dāng)前是“上下”或“左右”方向:由于某個(gè)點(diǎn)尋找目標(biāo)點(diǎn)時(shí),我引進(jìn)了行走方向,這樣可以節(jié)省一半的計(jì)算量。例如:如果當(dāng)前方向是“上下”,直線(xiàn)找不到時(shí),下一步遞歸對(duì)直線(xiàn)上的每個(gè)點(diǎn)的尋找,就只需要“左右”方向,不需要上下;
路徑記錄的列表。
以上是基本思路。
我的算法優(yōu)化方法很簡(jiǎn)單,就是在原來(lái)基礎(chǔ)上加上一個(gè)對(duì)應(yīng)于所有點(diǎn)的數(shù)組,用來(lái)記錄對(duì)應(yīng)的點(diǎn)在第多少連的情況下仍然沒(méi)有找到目標(biāo)點(diǎn)。例如:假設(shè)總共只能
n
連,當(dāng)前點(diǎn)已經(jīng)被記錄到經(jīng)過(guò)
x
連仍然找不到目標(biāo)點(diǎn),這時(shí),如果繼續(xù)遞歸到第
n-x+1
連又來(lái)到該點(diǎn),這時(shí)只剩下
x-1
連可以遞歸,而當(dāng)前點(diǎn)已經(jīng)記錄過(guò)
x
連都無(wú)法到達(dá),所以接下來(lái)的遞歸可以忽略。
這樣,大大減少了無(wú)效的計(jì)算,原來(lái)在第
6
連最壞情況下算了
40
多秒得到無(wú)解,現(xiàn)在可以在
20
連最壞情況下計(jì)算
2
秒得到無(wú)解。
那個(gè)n連看的算法當(dāng)時(shí)用一天寫(xiě)出來(lái),非常興奮。無(wú)奈電腦是內(nèi)網(wǎng),要保密,不能把代碼直接傳出來(lái),之前想過(guò)有時(shí)間要貼出來(lái),一直忘記了。現(xiàn)在在轉(zhuǎn)到這個(gè)新開(kāi)的blog。
只貼算法有關(guān)部分。用的是python語(yǔ)言:
1
class
CY_LianlianKan(
..):
2
def
__init__
(self):
3
self.m_Array
=
[]
#
存儲(chǔ)內(nèi)容的矩陣
4
self.m_LinkCount
=
0
#
需要連的總數(shù)
5
self.m_FirstPosition
=-
1
#
記下連的第一點(diǎn)
6
self.MaxWidth
=
13
#
矩陣寬
7
self.MaxHeight
=
12
#
矩陣高
8
#
其它初始化內(nèi)容
9
#
----------------------------------
10
def
IsTargetXYValid(self,X,Y):
11
#
目標(biāo)坐標(biāo)是否有效,超過(guò)矩陣寬高即無(wú)效
12
#
----------------------------------
13
def
IsTargetXYBlank(self,X,Y):
14
#
目標(biāo)是否空白可以通過(guò)
15
#
----------------------------------
16
def
GetArrayXY(self,X,Y):
17
#
獲取矩陣坐標(biāo)為XY的內(nèi)容
18
#
----------------------------------
19
def
IsLineable(self,x1,y1,x2,y2,direction):
#
判斷兩點(diǎn)是否可以通過(guò)某方向直線(xiàn)連接
20
#
方向direction:1←2→3↑4↓
21
if
direction
==
1
:
22
if
y1
==
y2
and
x1
>
x2:
23
for
i
in
xrange(x2,x1
+
1
):
24
if
self.GetArrayXY(i,y1)
>
0:
25
return
False
26
return
True
27
elif
direction
==
2
:
28
if
y1
==
y2
and
x1
<
x2:
29
for
i
in
xrange(x1,x2
+
1
):
30
if
self.GetArrayXY(i,y1)
>
0:
31
return
False
32
return
True
33
elif
direction
==
3
:
34
if
x1
==
x2
and
y1
<
y2:
35
for
i
in
xrange(y1,y2
+
1
):
36
if
self.GetArrayXY(x1,i)
>
0:
37
return
False
38
return
True
39
elif
direction
==
4
:
40
if
x1
==
x2
and
y2
<
y1:
41
for
i
in
xrange(y2,y1
+
1
):
42
if
self.GetArrayXY(x1,i)
>
0:
43
return
False
44
return
True
45
return
False
46
#
---------------------------------------
47
def
IsNTurnReachable(self,x1,y1,x2,y2,path,n,LRorUD,hasReachPoint):
48
#
path成功時(shí)用于記錄路徑 n當(dāng)前剩下的連數(shù) LRorUD當(dāng)前方向是上下還是左右
49
#
hasReachPoint 一個(gè)矩陣,用于記錄矩陣中各個(gè)點(diǎn)目前已經(jīng)經(jīng)過(guò)多少連了還找不到目標(biāo)點(diǎn)
50
if
n
<=
0:
51
return
False
52
if
LRorUD:
#
左右方向
53
for
x
in
xrange(x1
-
1
,
-
1
,
-
1
):
#
向左
54
if
self.GetArrayXY(x,y1)
==
0
and
hasReachPoint[y1
*
self.MaxWidth
+
x]
<
n:
55
if
self.IsLineable(x,y1,x2,y2,
3
)
or
self.IsLinable(x,y1,x2,y2,
4
):
56
path
+=
[x,y1,x2,y2]
57
return
path
58
else
:
#
到達(dá)不了,上下轉(zhuǎn)彎,遞歸
59
hasReachPoint[y1
*
self.MaxWidth
+
x]
+=
1
60
p
=
self.IsNTurnReachable(x,y1,x2,y2,path
+
[x,y1],n
-
1
,False,hasReachPoint)
61
if
p
!=
False:
62
return
p
63
else
:
64
break
65
for
x
in
xrange(x1
+
1
,self.MaxWidth):
#
向右
66
if
self.GetArrayXY(x,y1)
==
0
and
hasReachPoint[y1
*
self.MaxWidth
+
x]
<
n:
67
if
self.IsLineable(x,y1,x2,y2,
3
)
or
self.IsLineable(x,y1,x2,y2,
4
):
68
path
+=
[x,y1,x2,y2]
69
return
path
70
else
:
#
到達(dá)不了,上下轉(zhuǎn)彎,遞歸
71
hasReachPoint[y1
*
self.MaxWidth
+
x]
+=
1
72
p
=
self.IsNTurnReachable(x,y1,x2,y2,path
+
[x,y1],n
-
1
,False,hasReachPoint)
73
if
p
!=
False:
74
return
p
75
else
:
76
break
77
else
:
#
上下移動(dòng)
78
for
y
in
xrange(y1
-
1
,
-
1
,
-
1
):
#
向上
79
if
self.GetArrayXY(x1,y)
==
0
and
hasReachPoint[y
*
self.MaxWidth
+
x1]
<
n:
80
if
self.IsLineable(x1,y,x2,y2,
1
)
or
self.IsLineable(x1,y,x2,y2,
2
):
81
path
+=
[x1,y,x2,y2]
82
return
path
83
else
:
#
到達(dá)不了,左右轉(zhuǎn)彎,遞歸
84
hasReachPoint[y
*
self.MaxWidth
+
x1]
+=
1
85
p
=
self.IsNTurnReachable(x1,y,x2,y2,path
+
[x1,y],n
-
1
,True,hasReachPoint)
86
if
p
!=
False:
87
return
p
88
else
:
89
break
90
for
y
in
xrange(y1
+
1
,self.MaxHeight):
#
向下
91
if
self.GetArrayXY(x1,y)
==
0
and
hasReachPoint[y
*
self.MaxWidth
+
x1]
<
n:
92
if
self.IsLineable(x1,y,x2,y2,
1
)
or
self.IsLineable(x1,y,x2,y2,
2
):
93
path
+=
[x1,y,x2,y2]
94
return
path
95
else
:
#
到達(dá)不了,左右轉(zhuǎn)彎,遞歸
96
hasReachPoint[y
*
self.MaxWidth
+
x1]
+=
1
97
p
=
self.IsNTurnReachable(x1,y,x2,y2,path
+
[x1,y],n
-
1
,True,hasReachPoint)
98
if
p
!=
False:
99
return
p
100
else
:
101
break
102
return
False
103
#
--------------------------------------------------------
104
def
IsLinkAble(self,x1,y1,x2,y2,n):
#
n連看的計(jì)算函數(shù)
105
if
n
<=
0:
106
return
False
107
hasReachPoint
=
[0]
*
(self.MaxWidth
*
self.MaxHeight)
108
for
i
in
[0,
1
,
2
,
3
]:
109
if
self.isLineable(x1,y1,x2,y2,i):
110
path
=
[x1,y1,x2,y2]
111
return
path
112
path
=
[x1,y1]
113
p
=
self.IsNTurnReachalbe(x1,y1,x2,y2,path,n
-
1
,False,hasReachPoint)
114
if
p:
115
return
p
116
p
=
self.IsNTurnReachalbe(x1,y1,x2,y2,path,n
-
1
,True,hasReachPoint)
117
if
p:
118
return
p
119
return
False
當(dāng)然,現(xiàn)在想到還有可以繼續(xù)優(yōu)化的地方,例如尋路時(shí),從起點(diǎn)和目標(biāo)點(diǎn)同時(shí)出發(fā)尋路,而不是只從一個(gè)點(diǎn)出發(fā)尋路。這樣做或許還可以雙線(xiàn)程優(yōu)化,不過(guò)具體做法就沒(méi)有細(xì)想了。
posted on 2009-06-28 19:50
陳昱(CY)
閱讀(1626)
評(píng)論(2)
編輯
收藏
引用
所屬分類(lèi):
算法
FeedBack:
#
re: 以前寫(xiě)的一個(gè)N連看 2009-06-29 23:15
小卒
我最近想寫(xiě)個(gè)立體數(shù)獨(dú),不過(guò)理論功底不行……
回復(fù)
更多評(píng)論
#
re: 以前寫(xiě)的一個(gè)N連看
2009-06-30 09:34
CY
那還要先證明立體數(shù)獨(dú)需要用多少個(gè)候選數(shù)
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶(hù)
登錄
后才能發(fā)表評(píng)論。
相關(guān)文章:
某人水題一道
shader的小奏鳴曲
一個(gè)想法,實(shí)習(xí)n維立方體!!! (結(jié)束)
一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章)
一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影!!!(1)
以前寫(xiě)的一個(gè)N連看
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Copyright ©2025 陳昱(CY) Powered by:
博客園
模板提供:
滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美成人午夜激情在线
|
一区二区三区四区五区精品视频
|
国产欧美日韩亚州综合
|
欧美性大战xxxxx久久久
|
欧美搞黄网站
|
欧美黄色aaaa
|
欧美日韩一区二区三区视频
|
欧美日韩美女一区二区
|
国产精品观看
|
国产在线日韩
|
亚洲高清不卡在线
|
一本久道久久综合中文字幕
|
亚洲伊人网站
|
久久久久在线
|
亚洲日本成人
|
中国女人久久久
|
亚洲欧美日韩一区二区在线
|
久久久久一区
|
国产精品v亚洲精品v日韩精品
|
国产精品私拍pans大尺度在线
|
国产一区再线
|
中日韩在线视频
|
久久精品91久久久久久再现
|
欧美aa在线视频
|
中文久久精品
|
老司机午夜精品视频在线观看
|
久久午夜影视
|
亚洲国产精品小视频
|
亚洲最新在线
|
欧美综合国产
|
欧美四级在线观看
|
精品动漫3d一区二区三区免费
|
亚洲另类黄色
|
久久久久久久久久久久久女国产乱
|
欧美成人影音
|
亚洲一区在线观看视频
|
欧美99久久
|
国内精品久久久久影院优
|
99伊人成综合
|
亚洲第一黄色
|
久久av资源网
|
国产精品久久久久影院亚瑟
|
亚洲激情成人
|
久久资源在线
|
欧美一级专区
|
国产欧美日本一区二区三区
|
亚洲视频国产视频
|
欧美不卡在线
|
欧美一级网站
|
国产精品免费看片
|
亚洲午夜国产成人av电影男同
|
欧美国产精品久久
|
久久亚洲美女
|
一区二区亚洲精品国产
|
久久精品国产一区二区三区免费看
|
av不卡免费看
|
欧美三级视频在线播放
|
亚洲乱码精品一二三四区日韩在线
|
久久另类ts人妖一区二区
|
一本久道久久综合中文字幕
|
欧美激情一级片一区二区
|
最新国产精品拍自在线播放
|
欧美成人午夜视频
|
久久天堂成人
|
亚洲成色www8888
|
久久夜色撩人精品
|
久久精品夜色噜噜亚洲aⅴ
|
亚洲精品少妇
|
亚洲国产清纯
|
欧美日本精品
|
中文亚洲视频在线
|
在线视频日本亚洲性
|
国产精品乱码妇女bbbb
|
午夜精品免费
|
欧美一区二区三区电影在线观看
|
国产人久久人人人人爽
|
久久久无码精品亚洲日韩按摩
|
亚洲性感激情
|
亚洲综合色在线
|
亚洲视频综合
|
国产精品尤物
|
久久婷婷国产综合尤物精品
|
玖玖综合伊人
|
99国内精品久久
|
亚洲无亚洲人成网站77777
|
国产午夜亚洲精品羞羞网站
|
免费成人性网站
|
欧美国产一区二区
|
性欧美大战久久久久久久免费观看
|
亚洲影院一区
|
亚洲成人资源
|
一区二区三区视频在线播放
|
国内精品视频在线播放
|
亚洲二区在线观看
|
国产精品视频网
|
欧美大胆成人
|
国产精品一二三视频
|
欧美高清视频一二三区
|
国产精品高清在线
|
欧美大片va欧美在线播放
|
国产精品毛片一区二区三区
|
欧美成人免费va影院高清
|
欧美区日韩区
|
久久久久久久综合色一本
|
欧美国产91
|
久久九九电影
|
欧美四级电影网站
|
欧美大片在线观看一区
|
国产精品一区二区三区四区五区
|
欧美国产日韩一区
|
国产婷婷成人久久av免费高清
|
亚洲日本aⅴ片在线观看香蕉
|
国产亚洲女人久久久久毛片
|
日韩一区二区免费看
|
在线免费观看日韩欧美
|
午夜精品国产精品大乳美女
|
在线视频日韩
|
噜噜噜91成人网
|
久久精品91久久香蕉加勒比
|
欧美午夜视频一区二区
|
亚洲国产视频直播
|
亚洲电影激情视频网站
|
欧美亚洲一级片
|
午夜精品福利视频
|
欧美日韩免费看
|
91久久精品www人人做人人爽
|
激情综合久久
|
久久国产欧美
|
久久精品男女
|
国产日韩欧美一区二区三区在线观看
|
99成人免费视频
|
亚洲深爱激情
|
欧美日韩在线视频首页
|
91久久久精品
|
亚洲欧洲在线播放
|
母乳一区在线观看
|
欧美韩日一区
|
亚洲激情网址
|
老牛影视一区二区三区
|
麻豆亚洲精品
|
亚洲福利电影
|
欧美1区3d
|
亚洲欧洲在线观看
|
欧美在线看片
|
久久精品最新地址
|
国产日韩欧美一二三区
|
欧美中文字幕视频
|
猛干欧美女孩
|
亚洲经典三级
|
欧美日韩亚洲高清一区二区
|
一本色道久久综合亚洲精品婷婷
|
av成人国产
|
国产精品狼人久久影院观看方式
|
亚洲欧美日韩网
|
久久综合婷婷
|
亚洲精品在线一区二区
|
欧美久久一区
|
亚洲在线视频一区
|
久久婷婷国产综合精品青草
|
亚洲国产第一
|
欧美日韩欧美一区二区
|
亚洲免费在线
|
免费在线成人
|
亚洲视频1区2区
|
国产一区二区三区在线免费观看
|
久久亚裔精品欧美
|
日韩小视频在线观看专区
|
欧美一区二区三区免费在线看
|
一区二区视频欧美
|
欧美三级黄美女
|
久久精品五月
|
夜夜嗨av一区二区三区网页
|
久久久久久噜噜噜久久久精品
|
亚洲欧洲一区二区三区在线观看
|
欧美午夜电影一区
|
久久久无码精品亚洲日韩按摩
|
亚洲国产精品va
|
欧美一级淫片播放口
|
亚洲经典三级
|
国产亚洲一区二区三区在线观看
|
欧美大片专区
|
欧美一区二区视频在线
|
亚洲精品美女免费
|
久久影视三级福利片
|
亚洲一区在线看
|
91久久国产综合久久91精品网站
|
国产精品捆绑调教
|
欧美看片网站
|
久久蜜臀精品av
|
亚洲综合欧美日韩
|
亚洲三级电影全部在线观看高清
|
久久精品国产欧美激情
|
一区二区三区鲁丝不卡
|
亚洲国产一二三
|
国产欧美一区二区精品性
|
欧美日韩国产经典色站一区二区三区
|
久久激情五月丁香伊人
|
亚洲欧美日韩国产一区二区
|
日韩一二在线观看
|
亚洲国产一区在线观看
|