青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
C大調如歌的行板
我也來發明山楂車輪
C++博客
首頁
新隨筆
聯系
聚合
管理
隨筆 - 32 文章 - 94 trackbacks - 0
<
2013年1月
>
日
一
二
三
四
五
六
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
31
1
2
3
4
5
6
7
8
9
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(8)
給我留言
查看公開留言
查看私人留言
隨筆分類
C++(4)
鋼琴(8)
其他(9)
算法(6)
圖形學(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)
好友連接
大學同班大牛人CK
大學同宿大牛人vczh
搜索
最新評論
1.?re: 之前做的LOD動態地形
@kk
沒錯啊,直接在vs里面依據高度圖重新計算頂點高度
--陳昱(CY)
2.?re: 之前做的LOD動態地形[未登錄]
大神,何詠說的“一般都是分塊之后直接在GPU上面搞Displacement ”,什么是Displacement啊。Displacemen mapping 么?
--kk
3.?re: 肖邦練習曲《離別》
多去鋼琴有關的論壇交流~@溪流
--陳昱(CY)
4.?re: 肖邦練習曲《離別》
@陳昱(CY)
仰慕~~
拜厄前50條水平,有空請多多指教!
--溪流
5.?re: 肖邦練習曲《離別》
鋼琴年齡比編程還長好多的說~~@溪流
--陳昱(CY)
閱讀排行榜
1.?shader toy 上練習,畫了個baby grand piano(4860)
2.?(原創)宇宙10個維度的一句話理解(3423)
3.?喬治·溫斯頓的C大調《卡農》(3420)
4.?肖邦練習曲《牧羊人的笛子》(3371)
5.?李斯特《愛之夢》(3297)
評論排行榜
1.?之前做的LOD動態地形(10)
2.?多點觸摸的GUI?(10)
3.?一個想法,實現n維超級立方體!!!初步成功!!!(第二章)(9)
4.?一個想法,實習n維立方體!!! (結束)(9)
5.?一個想法,用程序畫出高維超立方體在三維上的投影!!!(1)(8)
以前寫的一個N連看
這一周,我寫好了一個連連看,在設計連連看的算法的過程中,我設計了一個可以控制連數的連連看算法,并把連連看改成了“
n
連看”,然后經過算法優化,使我的連連看算法在
20
連、無解、矩陣是
13*11
、最壞情況(一個周圍空曠,一個被包圍)下,運算速度僅
2
秒左右。而經過優化之前,到了
6
連的最壞情況下就已經慢得無法接受了。
基本的算法是這樣的:
先寫一個函數
f1
,判斷點
1
和點
2
能否經過某個方向直線到達,方向有上、下、左、右四種
再寫一個函數
f2
用于循環遞歸調用
f1
,思路是:如果起始點通過直線到達不了目標點,就把起始點可以直線到達的每個點當成下一次調用的起始點,直到找到目標點就立即返回。
f2
的參數包括:
n
連:用來控制遞歸深度;
2
個點(起始點和目標點),用來判斷能夠經過
n
連連接的
2
個點;
判斷當前是“上下”或“左右”方向:由于某個點尋找目標點時,我引進了行走方向,這樣可以節省一半的計算量。例如:如果當前方向是“上下”,直線找不到時,下一步遞歸對直線上的每個點的尋找,就只需要“左右”方向,不需要上下;
路徑記錄的列表。
以上是基本思路。
我的算法優化方法很簡單,就是在原來基礎上加上一個對應于所有點的數組,用來記錄對應的點在第多少連的情況下仍然沒有找到目標點。例如:假設總共只能
n
連,當前點已經被記錄到經過
x
連仍然找不到目標點,這時,如果繼續遞歸到第
n-x+1
連又來到該點,這時只剩下
x-1
連可以遞歸,而當前點已經記錄過
x
連都無法到達,所以接下來的遞歸可以忽略。
這樣,大大減少了無效的計算,原來在第
6
連最壞情況下算了
40
多秒得到無解,現在可以在
20
連最壞情況下計算
2
秒得到無解。
那個n連看的算法當時用一天寫出來,非常興奮。無奈電腦是內網,要保密,不能把代碼直接傳出來,之前想過有時間要貼出來,一直忘記了。現在在轉到這個新開的blog。
只貼算法有關部分。用的是python語言:
1
class
CY_LianlianKan(
..):
2
def
__init__
(self):
3
self.m_Array
=
[]
#
存儲內容的矩陣
4
self.m_LinkCount
=
0
#
需要連的總數
5
self.m_FirstPosition
=-
1
#
記下連的第一點
6
self.MaxWidth
=
13
#
矩陣寬
7
self.MaxHeight
=
12
#
矩陣高
8
#
其它初始化內容
9
#
----------------------------------
10
def
IsTargetXYValid(self,X,Y):
11
#
目標坐標是否有效,超過矩陣寬高即無效
12
#
----------------------------------
13
def
IsTargetXYBlank(self,X,Y):
14
#
目標是否空白可以通過
15
#
----------------------------------
16
def
GetArrayXY(self,X,Y):
17
#
獲取矩陣坐標為XY的內容
18
#
----------------------------------
19
def
IsLineable(self,x1,y1,x2,y2,direction):
#
判斷兩點是否可以通過某方向直線連接
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成功時用于記錄路徑 n當前剩下的連數 LRorUD當前方向是上下還是左右
49
#
hasReachPoint 一個矩陣,用于記錄矩陣中各個點目前已經經過多少連了還找不到目標點
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
:
#
到達不了,上下轉彎,遞歸
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
:
#
到達不了,上下轉彎,遞歸
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
:
#
上下移動
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
:
#
到達不了,左右轉彎,遞歸
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
:
#
到達不了,左右轉彎,遞歸
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連看的計算函數
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
當然,現在想到還有可以繼續優化的地方,例如尋路時,從起點和目標點同時出發尋路,而不是只從一個點出發尋路。這樣做或許還可以雙線程優化,不過具體做法就沒有細想了。
posted on 2009-06-28 19:50
陳昱(CY)
閱讀(1628)
評論(2)
編輯
收藏
引用
所屬分類:
算法
FeedBack:
#
re: 以前寫的一個N連看 2009-06-29 23:15
小卒
我最近想寫個立體數獨,不過理論功底不行……
回復
更多評論
#
re: 以前寫的一個N連看
2009-06-30 09:34
CY
那還要先證明立體數獨需要用多少個候選數
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
相關文章:
某人水題一道
shader的小奏鳴曲
一個想法,實習n維立方體!!! (結束)
一個想法,實現n維超級立方體!!!初步成功!!!(第二章)
一個想法,用程序畫出高維超立方體在三維上的投影!!!(1)
以前寫的一個N連看
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright ©2025 陳昱(CY) Powered by:
博客園
模板提供:
滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
久久久精品视频成人
|
麻豆精品网站
|
一区二区三区国产在线
|
欧美日韩精品不卡
|
亚洲综合久久久久
|
亚洲视频一区二区
|
国产精品爱久久久久久久
|
亚洲一区日本
|
香蕉视频成人在线观看
|
国产免费成人在线视频
|
性久久久久久久久久久久
|
亚洲香蕉成视频在线观看
|
国产精品日韩在线观看
|
欧美一区二区三区啪啪
|
欧美一区二区网站
|
久久se精品一区二区
|
狠狠色综合网站久久久久久久
|
午夜精品久久久久
|
性欧美大战久久久久久久久
|
激情久久五月天
|
欧美v日韩v国产v
|
免费观看在线综合
|
亚洲国产高清自拍
|
亚洲人成网站在线播
|
欧美精品在欧美一区二区少妇
|
中文亚洲字幕
|
欧美一级在线播放
|
亚洲日本欧美
|
亚洲一区制服诱惑
|
亚洲日本欧美日韩高观看
|
一二三区精品
|
影音先锋在线一区
|
夜夜爽99久久国产综合精品女不卡
|
国产精品久久91
|
欧美激情一区二区三区在线视频观看
|
欧美日韩一区二区三区四区在线观看
|
亚洲小少妇裸体bbw
|
亚洲欧美日韩国产精品
|
激情综合色综合久久综合
|
亚洲精品国产品国语在线app
|
国产精品ⅴa在线观看h
|
美日韩精品视频
|
欧美午夜欧美
|
欧美黑人多人双交
|
国产精品区一区二区三区
|
欧美激情一区二区三区蜜桃视频
|
麻豆av福利av久久av
|
亚洲综合色网站
|
欧美高清视频
|
欧美+亚洲+精品+三区
|
国产区日韩欧美
|
日韩一级黄色av
|
亚洲精品视频一区二区三区
|
亚洲欧美日韩一区二区三区在线
|
日韩视频不卡
|
久久久人成影片一区二区三区观看
|
欧美国产高清
|
玖玖在线精品
|
国内视频一区
|
亚洲欧美在线另类
|
亚洲一区二区三区乱码aⅴ蜜桃女
|
欧美与黑人午夜性猛交久久久
|
亚洲免费在线视频
|
欧美日韩在线观看一区二区三区
|
亚洲福利国产精品
|
最新日韩在线
|
欧美精品一区二区三
|
亚洲激情在线激情
|
亚洲看片网站
|
欧美日韩亚洲一区二区三区四区
|
欧美激情91
|
亚洲黄色天堂
|
可以看av的网站久久看
|
欧美jizz19性欧美
|
国模大胆一区二区三区
|
欧美一区二区视频在线观看2020
|
久久电影一区
|
国产欧美精品一区二区三区介绍
|
一区二区三区高清在线
|
亚洲一区二区三区激情
|
国产精品一区二区三区四区五区
|
中日韩午夜理伦电影免费
|
欧美一级大片在线免费观看
|
国产精品一区二区三区免费观看
|
香蕉久久国产
|
欧美韩国在线
|
亚洲免费观看在线观看
|
欧美日韩国产综合久久
|
在线中文字幕一区
|
欧美一级成年大片在线观看
|
国产精品欧美日韩一区
|
久久精品夜色噜噜亚洲a∨
|
久久综合九色综合欧美就去吻
|
亚洲大胆人体视频
|
欧美日本国产视频
|
亚洲一区二区不卡免费
|
麻豆精品在线视频
|
亚洲乱码精品一二三四区日韩在线
|
国产女主播一区二区三区
|
欧美伊人久久久久久久久影院
|
欧美黄色aa电影
|
亚洲一区二区三区免费在线观看
|
国产一区视频在线观看免费
|
欧美xart系列在线观看
|
日韩午夜三级在线
|
久久国产精品黑丝
|
亚洲精品在线一区二区
|
国产精品草草
|
美女脱光内衣内裤视频久久影院
|
亚洲图中文字幕
|
久久综合九色九九
|
亚洲一级黄色片
|
在线观看欧美一区
|
国产精品视频福利
|
欧美激情欧美狂野欧美精品
|
欧美影院成人
|
亚洲伊人观看
|
亚洲精品视频在线观看免费
|
老色鬼精品视频在线观看播放
|
亚洲一区二区在
|
亚洲美女免费视频
|
尤物在线精品
|
国产欧美日韩一区二区三区在线
|
欧美福利在线观看
|
久久亚洲一区
|
久久久国产精品一区二区三区
|
中文av字幕一区
|
亚洲精品在线观看视频
|
欧美成人一区二区
|
久久久久网站
|
欧美综合77777色婷婷
|
99在线精品视频在线观看
|
在线观看欧美视频
|
激情偷拍久久
|
精品成人国产
|
在线播放国产一区中文字幕剧情欧美
|
国产精品免费看久久久香蕉
|
欧美天堂亚洲电影院在线播放
|
亚洲午夜久久久
|
一区二区三区www
|
99精品视频免费观看视频
|
亚洲国产成人精品女人久久久
|
欧美xxx成人
|
免费91麻豆精品国产自产在线观看
|
欧美一区二区女人
|
欧美一区二区视频在线观看2020
|
亚洲图片欧洲图片av
|
99精品国产热久久91蜜凸
|
亚洲精品五月天
|
99在线|亚洲一区二区
|
一本色道久久综合亚洲精品不卡
|
99天天综合性
|
亚洲综合色丁香婷婷六月图片
|
亚洲图片激情小说
|
午夜老司机精品
|
欧美一区二区视频在线观看
|
久久av一区二区三区
|
久久国产手机看片
|
猫咪成人在线观看
|
欧美激情偷拍
|
亚洲乱码久久
|
亚洲中午字幕
|
久久五月激情
|
欧美日韩精品在线播放
|
国产精品福利在线观看网址
|
国产精品素人视频
|
今天的高清视频免费播放成人
|
亚洲国产黄色
|
亚洲一区在线免费观看
|
欧美在线观看网址综合
|
老牛嫩草一区二区三区日本
|
亚洲国产欧美一区二区三区同亚洲
|
校园激情久久
|
免费看黄裸体一级大秀欧美
|
欧美日韩国产在线观看
|
国产色产综合产在线视频
|
伊人久久婷婷
|
亚洲在线电影
|
蜜臀91精品一区二区三区
|
亚洲精品久久视频
|
香蕉久久国产
|
欧美国产综合一区二区
|
国产精品一区二区视频
|
国产精品美女久久久久久2018
|
欧美精品日韩一区
|
国产日本精品
|
一区二区三区视频在线
|
久久日韩精品
|
亚洲网站在线播放
|
欧美大色视频
|
国自产拍偷拍福利精品免费一
|
夜夜狂射影院欧美极品
|
久久一区二区三区四区
|
亚洲视频碰碰
|
欧美日韩大片
|
亚洲国产mv
|
久久精品国产一区二区三区免费看
|
亚洲高清不卡在线
|
久久精品国产一区二区电影
|
欧美视频在线观看免费
|