worm
為什么我的眼里飽含淚水?因?yàn)槲页绦驔]寫完!
隨筆 - 5, 文章 - 2, 評(píng)論 - 10, 引用 - 0
數(shù)據(jù)加載中……
poj 3414解題報(bào)告(廣搜題)
郁悶?zāi)?,寫了七個(gè)小時(shí),一直在調(diào)試錯(cuò)誤了!fuck it! 這個(gè)與別的BFS題的主要不同是要記錄正確順序的路徑,我用path[i][j] = {way,a,b}表示狀態(tài)(i,j)是由狀態(tài)(a,b)經(jīng)過方式way(一共六種方式)來得到的;呵呵,郁悶?。?br> 不過值得高興地是提交一次成功,呵呵,希望對(duì)大家有所幫助!下面是代碼,很亂,請(qǐng)大家湊合著看吧,現(xiàn)在是沒心情優(yōu)化了!!
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
閱讀(1666)
評(píng)論(5)
編輯
收藏
引用
評(píng)論
#
re: poj 3414解題報(bào)告(廣搜題)[未登錄]
回復(fù)
更多評(píng)論
垃圾
2009-03-08 18:59 |
A
#
re: poj 3414解題報(bào)告(廣搜題)
回復(fù)
更多評(píng)論
@A 我承認(rèn)本人是菜鳥,你牛逼你來搜人家的解題報(bào)告干嘛?。浚?
2009-03-08 19:03 |
WORM
#
re: poj 3414解題報(bào)告(廣搜題)[未登錄]
回復(fù)
更多評(píng)論
我不是搜,訂閱到博客天天是解體報(bào)告。。
2009-03-08 19:55 |
A
#
re: poj 3414解題報(bào)告(廣搜題)
回復(fù)
更多評(píng)論
已閱 刪之
2009-03-08 20:24 |
cppexplore
#
re: poj 3414解題報(bào)告(廣搜題)
回復(fù)
更多評(píng)論
那我寫啥?@A
2009-03-08 20:56 |
WORM
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © WORM
導(dǎo)航
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
<
2025年6月
>
日
一
二
三
四
五
六
25
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
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2009年3月 (5)
文章檔案
2009年3月 (2)
相冊(cè)
me
OJ
PKU
搜索
最新評(píng)論
1.?re: 第一道廣度搜索BFS紀(jì)念 poj 3278 源代碼
你那段英語(yǔ)翻譯過來:
但是關(guān)于我,我真的開心對(duì)它,我高潮了!蠕蟲永遠(yuǎn)不放棄!
--english teacher
2.?re: 第一道廣度搜索BFS紀(jì)念 poj 3278 源代碼
膜拜下··
--hm
3.?re: 第一道廣度搜索BFS紀(jì)念 poj 3278 源代碼
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--hj
4.?re: poj 3414解題報(bào)告(廣搜題)
那我寫啥?@A
--WORM
5.?re: poj 3126 Prim Path 第一道BFS
已閱 移除
--cppexplore
閱讀排行榜
1.?poj 3414解題報(bào)告(廣搜題)(1666)
2.?poj 3126 Prim Path 第一道BFS(1334)
3.?第一道廣度搜索BFS紀(jì)念 poj 3278 源代碼(1300)
4.?poj 3191解題報(bào)告(1166)
5.?poj 3705解題思路及源代碼(317)
評(píng)論排行榜
1.?poj 3414解題報(bào)告(廣搜題)(5)
2.?第一道廣度搜索BFS紀(jì)念 poj 3278 源代碼(3)
3.?poj 3126 Prim Path 第一道BFS(1)
4.?poj 3191解題報(bào)告(1)
5.?poj 3705解題思路及源代碼(0)
2020国产成人久久精品
|
久久A级毛片免费观看
|
久久久久国色AV免费看图片
|
曰曰摸天天摸人人看久久久
|
久久99久久成人免费播放
|
尹人香蕉久久99天天拍
|
久久黄视频
|
合区精品久久久中文字幕一区
|
伊人伊成久久人综合网777
|
久久精品国产亚洲精品2020
|
yellow中文字幕久久网
|
伊人久久大香线蕉成人
|
精品国产乱码久久久久软件
|
久久99国产精品久久99果冻传媒
|
欧美粉嫩小泬久久久久久久
|
久久av无码专区亚洲av桃花岛
|
久久99国产精品久久
|
国产美女亚洲精品久久久综合
|
91久久精品电影
|
亚洲综合伊人久久综合
|
午夜肉伦伦影院久久精品免费看国产一区二区三区
|
国产精品久久久久影视不卡
|
亚洲国产精品无码久久SM
|
久久国产成人午夜aⅴ影院
|
久久久老熟女一区二区三区
|
亚洲国产精品综合久久网络
|
狠狠色丁香婷婷久久综合不卡
|
久久精品国产清自在天天线
|
欧美与黑人午夜性猛交久久久
|
91亚洲国产成人久久精品网址
|
韩国免费A级毛片久久
|
久久久久av无码免费网
|
久久综合偷偷噜噜噜色
|
伊人久久一区二区三区无码
|
天天综合久久一二三区
|
免费一级做a爰片久久毛片潮
|
久久久久久毛片免费看
|
亚洲精品国产自在久久
|
亚洲国产天堂久久综合
|
久久午夜福利无码1000合集
|
久久精品国产亚洲AV久
|