worm
為什么我的眼里飽含淚水?因為我程序沒寫完!
隨筆 - 5, 文章 - 2, 評論 - 10, 引用 - 0
數據加載中……
poj 3414解題報告(廣搜題)
郁悶那,寫了七個小時,一直在調試錯誤了!fuck it! 這個與別的BFS題的主要不同是要記錄正確順序的路徑,我用path[i][j] = {way,a,b}表示狀態(i,j)是由狀態(a,b)經過方式way(一共六種方式)來得到的;呵呵,郁悶啊!
不過值得高興地是提交一次成功,呵呵,希望對大家有所幫助!下面是代碼,很亂,請大家湊合著看吧,現在是沒心情優化了!!
1
//
============================================================================
2
//
Name : poj.cpp
3
//
Author :
4
//
Version :
5
//
Copyright : Your copyright notice
6
//
Description : BFS
7
//
============================================================================
8
9
#include
<
iostream
>
10
#include
<
queue
>
11
int
A, B, C;
12
int
j
=
1
;
13
int
result[
101
][
101
]
=
{
0
}
;
14
using
namespace
std;
15
struct
node
{
16
int
a;
17
int
b;
18
}
;
19
struct
node2
{
20
int
pre;
21
int
m;
22
int
n;
23
}
path[
101
][
101
];
24
int
p[
1000
];
25
int
visited[
101
][
101
]
=
{
0
}
;
26
int
BFS(node x)
{
27
queue
<
node
>
q;
28
q.push(x);
29
visited[x.a][x.b]
=
1
;
30
result[x.a][x.b]
=
0
;
31
path[x.a][x.b].pre
=
0
;
32
path[
0
][
0
].m
=
path[
0
][
0
].n
=
0
;
33
while
(
!
q.empty())
{
34
node temp
=
q.front();
35
q.pop();
36
if
(temp.a
==
C)
37
return
temp.b;
38
if
(temp.b
==
C)
{
39
j
=
2
;
40
return
temp.a;
41
}
42
node y;
43
y.a
=
A;
44
y.b
=
temp.b;
45
if
(temp.a
<
A
&&
!
visited[A][temp.b])
{
46
q.push(y);
47
visited[A][temp.b]
=
1
;
48
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
49
path[y.a][y.b].pre
=
1
;
50
path[y.a][y.b].m
=
temp.a;
51
path[y.a][y.b].n
=
temp.b;
52
}
53
y.a
=
temp.a;
54
y.b
=
B;
55
if
(temp.b
<
B
&&
!
visited[y.a][y.b])
{
56
q.push(y);
57
visited[temp.a][B]
=
1
;
58
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
59
path[y.a][y.b].pre
=
2
;
60
path[y.a][y.b].m
=
temp.a;
61
path[y.a][y.b].n
=
temp.b;
62
63
}
64
y.a
=
0
;
65
y.b
=
temp.b;
66
if
(temp.a
!=
0
&&
!
visited[
0
][temp.b])
{
67
q.push(y);
68
visited[
0
][temp.b]
=
1
;
69
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
70
path[y.a][y.b].pre
=
3
;
71
path[y.a][y.b].m
=
temp.a;
72
path[y.a][y.b].n
=
temp.b;
73
74
}
75
76
y.a
=
temp.a;
77
y.b
=
0
;
78
if
(temp.b
!=
0
&&
!
visited[temp.a][
0
])
{
79
q.push(y);
80
visited[temp.a][
0
]
=
1
;
81
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
82
path[y.a][y.b].pre
=
4
;
83
path[y.a][y.b].m
=
temp.a;
84
path[y.a][y.b].n
=
temp.b;
85
86
}
87
y.a
=
temp.a
+
temp.b
-
B;
88
y.b
=
B;
89
if
(temp.a
+
temp.b
>
B
&&
!
visited[temp.a
+
temp.b
-
B][B])
{
90
q.push(y);
91
visited[temp.a
+
temp.b
-
B][B]
=
1
;
92
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
93
path[y.a][y.b].pre
=
5
;
94
path[y.a][y.b].m
=
temp.a;
95
path[y.a][y.b].n
=
temp.b;
96
97
}
98
y.a
=
0
;
99
y.b
=
temp.a
+
temp.b;
100
if
(temp.a
+
temp.b
<=
B
&&
!
visited[
0
][temp.a
+
temp.b])
{
101
q.push(y);
102
visited[
0
][temp.a
+
temp.b]
=
1
;
103
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
104
path[y.a][y.b].pre
=
5
;
105
path[y.a][y.b].m
=
temp.a;
106
path[y.a][y.b].n
=
temp.b;
107
108
}
109
y.a
=
A;
110
y.b
=
temp.a
+
temp.b
-
A;
111
if
(temp.a
+
temp.b
>
A
&&
!
visited[A][temp.a
+
temp.b
-
A])
{
112
q.push(y);
113
visited[A][temp.a
+
temp.b
-
A]
=
1
;
114
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
115
path[y.a][y.b].pre
=
6
;
116
path[y.a][y.b].m
=
temp.a;
117
path[y.a][y.b].n
=
temp.b;
118
}
119
y.a
=
temp.a
+
temp.b;
120
y.b
=
0
;
121
if
(temp.a
+
temp.b
<=
A
&&
!
visited[temp.a
+
temp.b][
0
])
{
122
q.push(y);
123
visited[temp.a
+
temp.b][
0
]
=
1
;
124
result[y.a][y.b]
=
result[temp.a][temp.b]
+
1
;
125
path[y.a][y.b].pre
=
6
;
126
path[y.a][y.b].m
=
temp.a;
127
path[y.a][y.b].n
=
temp.b;
128
129
}
130
}
131
return
-
1
;
132
}
133
int
main()
{
134
cin
>>
A
>>
B
>>
C;
135
int
i
=
1
;
136
int
ff;
137
node x;
138
x.a
=
0
;
139
x.b
=
0
;
140
int
m
=
BFS(x);
141
if
(m
==
-
1
)
{
142
cout
<<
"
impossible
"
<<
endl;
143
return
0
;
144
}
145
if
(j
==
1
)
{
146
ff
=
result[C][m];
147
cout
<<
result[C][m]
<<
endl;
148
int
x
=
C;
149
int
y
=
m;
150
while
(path[x][y].pre
!=
0
)
{
151
p[i
++
]
=
path[x][y].pre;
152
int
temp1
=
x;
153
int
temp2
=
y;
154
x
=
path[temp1][temp2].m;
155
y
=
path[temp1][temp2].n;
156
}
157
}
158
if
(j
==
2
)
{
159
ff
=
result[m][C];
160
cout
<<
result[m][C]
<<
endl;
161
int
x
=
m;
162
int
y
=
C;
163
while
(path[x][y].pre
!=
0
)
{
164
p[i
++
]
=
path[x][y].pre;
165
int
temp1
=
x;
166
int
temp2
=
y;
167
x
=
path[temp1][temp2].m;
168
y
=
path[temp1][temp2].n;
169
}
170
}
171
for
(
int
i
=
ff; i
>=
1
; i
--
)
{
172
switch
(p[i])
{
173
case
1
:
174
cout
<<
"
FILL(1)
"
<<
endl;
175
break
;
176
case
2
:
177
cout
<<
"
FILL(2)
"
<<
endl;
178
break
;
179
case
3
:
180
cout
<<
"
DROP(1)
"
<<
endl;
181
break
;
182
case
4
:
183
cout
<<
"
DROP(2)
"
<<
endl;
184
break
;
185
case
5
:
186
cout
<<
"
POUR(1,2)
"
<<
endl;
187
break
;
188
case
6
:
189
cout
<<
"
POUR(2,1)
"
<<
endl;
190
break
;
191
}
192
193
}
194
return
0
;
195
}
196
posted on 2009-03-08 18:40
WORM
閱讀(1660)
評論(5)
編輯
收藏
引用
評論
#
re: poj 3414解題報告(廣搜題)[未登錄]
回復
更多評論
垃圾
2009-03-08 18:59 |
A
#
re: poj 3414解題報告(廣搜題)
回復
更多評論
@A 我承認本人是菜鳥,你牛逼你來搜人家的解題報告干嘛啊??
2009-03-08 19:03 |
WORM
#
re: poj 3414解題報告(廣搜題)[未登錄]
回復
更多評論
我不是搜,訂閱到博客天天是解體報告。。
2009-03-08 19:55 |
A
#
re: poj 3414解題報告(廣搜題)
回復
更多評論
已閱 刪之
2009-03-08 20:24 |
cppexplore
#
re: poj 3414解題報告(廣搜題)
回復
更多評論
那我寫啥?@A
2009-03-08 20:56 |
WORM
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © WORM
導航
C++博客
首頁
新隨筆
聯系
聚合
管理
<
2009年3月
>
日
一
二
三
四
五
六
22
23
24
25
26
27
28
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
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2009年3月 (5)
文章檔案
2009年3月 (2)
相冊
me
OJ
PKU
搜索
最新評論
1.?re: 第一道廣度搜索BFS紀念 poj 3278 源代碼
你那段英語翻譯過來:
但是關于我,我真的開心對它,我高潮了!蠕蟲永遠不放棄!
--english teacher
2.?re: 第一道廣度搜索BFS紀念 poj 3278 源代碼
膜拜下··
--hm
3.?re: 第一道廣度搜索BFS紀念 poj 3278 源代碼
評論內容較長,點擊標題查看
--hj
4.?re: poj 3414解題報告(廣搜題)
那我寫啥?@A
--WORM
5.?re: poj 3126 Prim Path 第一道BFS
已閱 移除
--cppexplore
閱讀排行榜
1.?poj 3414解題報告(廣搜題)(1660)
2.?poj 3126 Prim Path 第一道BFS(1328)
3.?第一道廣度搜索BFS紀念 poj 3278 源代碼(1295)
4.?poj 3191解題報告(1161)
5.?poj 3705解題思路及源代碼(313)
評論排行榜
1.?poj 3414解題報告(廣搜題)(5)
2.?第一道廣度搜索BFS紀念 poj 3278 源代碼(3)
3.?poj 3126 Prim Path 第一道BFS(1)
4.?poj 3191解題報告(1)
5.?poj 3705解題思路及源代碼(0)
久久不见久久见免费影院www日本
|
久久精品国产一区二区三区不卡
|
久久久久久曰本AV免费免费
|
中文字幕久久精品
|
久久水蜜桃亚洲av无码精品麻豆
|
久久国产精品99国产精
|
国产一区二区精品久久岳
|
青青草原综合久久大伊人
|
久久久噜噜噜久久熟女AA片
|
国产99久久久久久免费看
|
中文国产成人精品久久亚洲精品AⅤ无码精品
|
亚洲日韩中文无码久久
|
亚洲国产精品久久久久网站
|
新狼窝色AV性久久久久久
|
精品欧美一区二区三区久久久
|
美女久久久久久
|
91视频国产91久久久
|
久久久久久久久久久
|
91亚洲国产成人久久精品网址
|
亚洲综合伊人久久综合
|
亚洲欧美成人久久综合中文网
|
国产精品免费久久久久电影网
|
久久久噜噜噜久久中文福利
|
亚洲精品无码久久千人斩
|
伊人精品久久久久7777
|
久久亚洲2019中文字幕
|
国产精品久久久久一区二区三区
|
久久夜色撩人精品国产小说
|
色综合久久最新中文字幕
|
麻豆亚洲AV永久无码精品久久
|
超级碰碰碰碰97久久久久
|
亚洲国产一成久久精品国产成人综合
|
一本色道久久88精品综合
|
亚洲精品视频久久久
|
久久综合视频网站
|
久久www免费人成精品香蕉
|
色综合合久久天天综合绕视看
|
国产精品久久99
|
久久久久四虎国产精品
|
国产精品久久久天天影视香蕉
|
久久www免费人成看国产片
|