﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C++心路历程-随笔分类-POJ</title><link>http://www.cppblog.com/Yusi-Xiao/category/9924.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 11 Apr 2009 21:31:52 GMT</lastBuildDate><pubDate>Sat, 11 Apr 2009 21:31:52 GMT</pubDate><ttl>60</ttl><item><title>POJ 1475 解题思路</title><link>http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79556.html</link><dc:creator>肖羽思</dc:creator><author>肖羽思</author><pubDate>Fri, 10 Apr 2009 14:36:00 GMT</pubDate><guid>http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79556.html</guid><wfw:comment>http://www.cppblog.com/Yusi-Xiao/comments/79556.html</wfw:comment><comments>http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yusi-Xiao/comments/commentRss/79556.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yusi-Xiao/services/trackbacks/79556.html</trackback:ping><description><![CDATA[经典题.双重BFS.<br>基本思路如下:<br>1.第一重BFS根据箱子可移动的位置进行BFS.<br>2.第二重将箱子目前所在的位置设为不可达,根据箱子所在的位置得出人所应该在的位置,根据此位置对人进行了BFS.<br>即可.
<img src ="http://www.cppblog.com/Yusi-Xiao/aggbug/79556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yusi-Xiao/" target="_blank">肖羽思</a> 2009-04-10 22:36 <a href="http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1517 解题报告</title><link>http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79553.html</link><dc:creator>肖羽思</dc:creator><author>肖羽思</author><pubDate>Fri, 10 Apr 2009 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79553.html</guid><wfw:comment>http://www.cppblog.com/Yusi-Xiao/comments/79553.html</wfw:comment><comments>http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yusi-Xiao/comments/commentRss/79553.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yusi-Xiao/services/trackbacks/79553.html</trackback:ping><description><![CDATA[无聊题.缓解心情.<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Code_Closed_Image_222019 onclick="this.style.display='none'; Code_Closed_Text_222019.style.display='none'; Code_Open_Image_222019.style.display='inline'; Code_Open_Text_222019.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 height=16><img style="DISPLAY: none" id=Code_Open_Image_222019 onclick="this.style.display='none'; Code_Open_Text_222019.style.display='none'; Code_Closed_Image_222019.style.display='inline'; Code_Closed_Text_222019.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 height=16><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Code_Closed_Text_222019>Code</span><span style="DISPLAY: none" id=Code_Open_Text_222019><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iomanip</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;factorial(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n)<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img id=Codehighlighter1_100_156_Open_Image onclick="this.style.display='none'; Codehighlighter1_100_156_Open_Text.style.display='none'; Codehighlighter1_100_156_Closed_Image.style.display='inline'; Codehighlighter1_100_156_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_100_156_Closed_Image onclick="this.style.display='none'; Codehighlighter1_100_156_Closed_Text.style.display='none'; Codehighlighter1_100_156_Open_Image.style.display='inline'; Codehighlighter1_100_156_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_100_156_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_100_156_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(n&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;factorial(n&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;_tmain(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;_TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img id=Codehighlighter1_196_534_Open_Image onclick="this.style.display='none'; Codehighlighter1_196_534_Open_Text.style.display='none'; Codehighlighter1_196_534_Closed_Image.style.display='inline'; Codehighlighter1_196_534_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_196_534_Closed_Image onclick="this.style.display='none'; Codehighlighter1_196_534_Closed_Text.style.display='none'; Codehighlighter1_196_534_Open_Image.style.display='inline'; Codehighlighter1_196_534_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_196_534_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_196_534_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">n&nbsp;e</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-&nbsp;-----------</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;result&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">,&nbsp;temp;<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;N;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i)<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img id=Codehighlighter1_318_521_Open_Image onclick="this.style.display='none'; Codehighlighter1_318_521_Open_Text.style.display='none'; Codehighlighter1_318_521_Closed_Image.style.display='inline'; Codehighlighter1_318_521_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_318_521_Closed_Image onclick="this.style.display='none'; Codehighlighter1_318_521_Closed_Text.style.display='none'; Codehighlighter1_318_521_Open_Image.style.display='inline'; Codehighlighter1_318_521_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_318_521_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_318_521_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">j)<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img id=Codehighlighter1_370_407_Open_Image onclick="this.style.display='none'; Codehighlighter1_370_407_Open_Text.style.display='none'; Codehighlighter1_370_407_Closed_Image.style.display='inline'; Codehighlighter1_370_407_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_370_407_Closed_Image onclick="this.style.display='none'; Codehighlighter1_370_407_Closed_Text.style.display='none'; Codehighlighter1_370_407_Open_Image.style.display='inline'; Codehighlighter1_370_407_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_370_407_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_370_407_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;factorial(j);<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img id=Codehighlighter1_424_464_Open_Image onclick="this.style.display='none'; Codehighlighter1_424_464_Open_Text.style.display='none'; Codehighlighter1_424_464_Closed_Image.style.display='inline'; Codehighlighter1_424_464_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_424_464_Closed_Image onclick="this.style.display='none'; Codehighlighter1_424_464_Closed_Text.style.display='none'; Codehighlighter1_424_464_Open_Image.style.display='inline'; Codehighlighter1_424_464_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_424_464_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_424_464_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%.9f\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;i,&nbsp;result);<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img id=Codehighlighter1_475_518_Open_Image onclick="this.style.display='none'; Codehighlighter1_475_518_Open_Text.style.display='none'; Codehighlighter1_475_518_Closed_Image.style.display='inline'; Codehighlighter1_475_518_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_475_518_Closed_Image onclick="this.style.display='none'; Codehighlighter1_475_518_Closed_Text.style.display='none'; Codehighlighter1_475_518_Open_Image.style.display='inline'; Codehighlighter1_475_518_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_475_518_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_475_518_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;result&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></span></div>
<img src ="http://www.cppblog.com/Yusi-Xiao/aggbug/79553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yusi-Xiao/" target="_blank">肖羽思</a> 2009-04-10 22:21 <a href="http://www.cppblog.com/Yusi-Xiao/archive/2009/04/10/79553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 2965 解题报告</title><link>http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77385.html</link><dc:creator>肖羽思</dc:creator><author>肖羽思</author><pubDate>Sat, 21 Mar 2009 03:11:00 GMT</pubDate><guid>http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77385.html</guid><wfw:comment>http://www.cppblog.com/Yusi-Xiao/comments/77385.html</wfw:comment><comments>http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yusi-Xiao/comments/commentRss/77385.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yusi-Xiao/services/trackbacks/77385.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本题与POJ 1753非常相似,因此直接提交以下代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1&nbsp;#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;2&nbsp;#incl...&nbsp;&nbsp;<a href='http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77385.html'>阅读全文</a><img src ="http://www.cppblog.com/Yusi-Xiao/aggbug/77385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yusi-Xiao/" target="_blank">肖羽思</a> 2009-03-21 11:11 <a href="http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1753 解题报告</title><link>http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77383.html</link><dc:creator>肖羽思</dc:creator><author>肖羽思</author><pubDate>Sat, 21 Mar 2009 02:30:00 GMT</pubDate><guid>http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77383.html</guid><wfw:comment>http://www.cppblog.com/Yusi-Xiao/comments/77383.html</wfw:comment><comments>http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yusi-Xiao/comments/commentRss/77383.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yusi-Xiao/services/trackbacks/77383.html</trackback:ping><description><![CDATA[


<div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">用位操作+BFS解决.基本思想如下:</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">给棋盘每一个状态赋予一个状态id,id计算方法是将棋盘与数的二进制表示联系起来,如题所给的数据:</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">bwwb</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">bbwb</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">bwwb</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">bwww</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">状态id为6585,计算方法为1*2^0+0*2^1+1*2^2..1*2^12+0*2^13..=6585(其中b代表1,w代表0)</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">在此基础上进行BFS搜索,首先理解一点,先点(0,0)再点(0,1)与先点(0,1)再点(0,0)对结果不造成任何影响.因此遍历棋盘的16个位置,将每次点击后的状态id利用树状结构保存.如:</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 6585</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; / &#160; | &#160; \ &#160;...</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; (0,0) (0,1) &#160;(0,2)</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;/ &#160; &#160; &#160;| &#160; &#160; &#160;\ &#160;...</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 6568 &#160; &#160; 6553 &#160; &#160; 6646</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;...............................</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">对此树进行BFS搜索,将id为0(全白)或65535(全黑)的时候则搜索成功,输出树的高度,否则输出"Impossible".</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: rgb(0, 128, 128);">为了提高搜索效率,采用位运算,如果想将整数的二进制某一位翻转可采用id^=(1&lt;&lt;x)(x代表要翻转的位置)</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">&#160;1</span>&#160;<span style="color: #000000; ">#include&#160;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">assert.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br></span><span style="color: #008080; ">&#160;2</span>&#160;<span style="color: #000000; ">#include&#160;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br></span><span style="color: #008080; ">&#160;3</span>&#160;<span style="color: #000000; ">#include&#160;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">queue</span><span style="color: #000000; ">></span><span style="color: #000000; "><br></span><span style="color: #008080; ">&#160;4</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&#160;std;<br></span><span style="color: #008080; ">&#160;5</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">&#160;6</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;MAX_STATE&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">65536</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">&#160;7</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;ALL_WHILE_STATE&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">&#160;8</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;ALL_BLACK_STATE&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">65535</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">&#160;9</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;WIDTH_OF_BOARD&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">10</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;SIZE_OF_BOARD&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;WIDTH_OF_BOARD&#160;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&#160;WIDTH_OF_BOARD;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;4&#160;*&#160;4</span><span style="color: #008000; "><br></span><span style="color: #008080; ">11</span>&#160;<span style="color: #008000; "></span><span style="color: #000000; "><br></span><span style="color: #008080; ">12</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;ConvertPieceColorToInt(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&#160;color)<br></span><span style="color: #008080; ">13</span>&#160;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">14</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">switch</span><span style="color: #000000; ">(color)<br></span><span style="color: #008080; ">15</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;{<br></span><span style="color: #008080; ">16</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">b</span><span style="color: #000000; ">'</span><span style="color: #000000; ">:<br></span><span style="color: #008080; ">17</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">18</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">w</span><span style="color: #000000; ">'</span><span style="color: #000000; ">:<br></span><span style="color: #008080; ">19</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">20</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080; ">21</span>&#160;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">22</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">23</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;FlipPiece(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;state_id,&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;position)<br></span><span style="color: #008080; ">24</span>&#160;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">25</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;state_id&#160;</span><span style="color: #000000; ">^=</span><span style="color: #000000; ">&#160;(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;position);<br></span><span style="color: #008080; ">26</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">27</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;up</span><span style="color: #008000; "><br></span><span style="color: #008080; ">28</span>&#160;<span style="color: #008000; "></span><span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(position&#160;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">>=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">29</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;state_id&#160;</span><span style="color: #000000; ">^=</span><span style="color: #000000; ">&#160;(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;(position&#160;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">));<br></span><span style="color: #008080; ">30</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;down</span><span style="color: #008000; "><br></span><span style="color: #008080; ">31</span>&#160;<span style="color: #008000; "></span><span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(position&#160;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&#160;SIZE_OF_BOARD)<br></span><span style="color: #008080; ">32</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;state_id&#160;</span><span style="color: #000000; ">^=</span><span style="color: #000000; ">&#160;(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;(position&#160;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">));<br></span><span style="color: #008080; ">33</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;left</span><span style="color: #008000; "><br></span><span style="color: #008080; ">34</span>&#160;<span style="color: #008000; "></span><span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(position&#160;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">35</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;state_id&#160;</span><span style="color: #000000; ">^=</span><span style="color: #000000; ">&#160;(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;(position&#160;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">));<br></span><span style="color: #008080; ">36</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;right</span><span style="color: #008000; "><br></span><span style="color: #008080; ">37</span>&#160;<span style="color: #008000; "></span><span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(position&#160;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">38</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;state_id&#160;</span><span style="color: #000000; ">^=</span><span style="color: #000000; ">&#160;(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;(position&#160;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">));<br></span><span style="color: #008080; ">39</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">40</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&#160;state_id;<br></span><span style="color: #008080; ">41</span>&#160;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">42</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">43</span>&#160;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;_tmain(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;argc,&#160;_TCHAR</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&#160;argv[])<br></span><span style="color: #008080; ">44</span>&#160;<span style="color: #000000; ">{<br></span><span style="color: #008080; ">45</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;current_state_id&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">46</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;state[MAX_STATE];<br></span><span style="color: #008080; ">47</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;queue</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">></span><span style="color: #000000; ">&#160;search_queue;<br></span><span style="color: #008080; ">48</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">49</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;memset(state,&#160;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&#160;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(state));<br></span><span style="color: #008080; ">50</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">51</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&#160;color;<br></span><span style="color: #008080; ">52</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">53</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;i&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&#160;i&#160;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&#160;SIZE_OF_BOARD;&#160;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br></span><span style="color: #008080; ">54</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;{<br></span><span style="color: #008080; ">55</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin&#160;</span><span style="color: #000000; ">>></span><span style="color: #000000; ">&#160;color;<br></span><span style="color: #008080; ">56</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;current_state_id&#160;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&#160;ConvertPieceColorToInt(color)&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;i;<br></span><span style="color: #008080; ">57</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080; ">58</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">59</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(current_state_id&#160;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&#160;ALL_WHILE_STATE<br></span><span style="color: #008080; ">60</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&#160;current_state_id&#160;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&#160;ALL_BLACK_STATE)<br></span><span style="color: #008080; ">61</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;{<br></span><span style="color: #008080; ">62</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">0</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;endl;<br></span><span style="color: #008080; ">63</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">64</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080; ">65</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">66</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;state[current_state_id]&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">67</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;search_queue.push(current_state_id);<br></span><span style="color: #008080; ">68</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">69</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;next_state_id;<br></span><span style="color: #008080; ">70</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">71</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">search_queue.empty())<br></span><span style="color: #008080; ">72</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;{<br></span><span style="color: #008080; ">73</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;current_state_id&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;search_queue.front();<br></span><span style="color: #008080; ">74</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;search_queue.pop();<br></span><span style="color: #008080; ">75</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">76</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&#160;i&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&#160;i&#160;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&#160;SIZE_OF_BOARD;&#160;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br></span><span style="color: #008080; ">77</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br></span><span style="color: #008080; ">78</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;next_state_id&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;FlipPiece(current_state_id,&#160;i);<br></span><span style="color: #008080; ">79</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(next_state_id&#160;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&#160;ALL_WHILE_STATE<br></span><span style="color: #008080; ">80</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&#160;next_state_id&#160;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&#160;ALL_BLACK_STATE)<br></span><span style="color: #008080; ">81</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br></span><span style="color: #008080; ">82</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;state[current_state_id]&#160;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;endl;<br></span><span style="color: #008080; ">83</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">84</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080; ">85</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;assert(next_state_id&#160;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&#160;MAX_STATE);<br></span><span style="color: #008080; ">86</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(state[next_state_id]&#160;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&#160;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&#160;not&#160;visited&#160;</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">)<br></span><span style="color: #008080; ">87</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br></span><span style="color: #008080; ">88</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;state[next_state_id]&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;state[current_state_id]&#160;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">89</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;search_queue.push(next_state_id);<br></span><span style="color: #008080; ">90</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080; ">91</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080; ">92</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080; ">93</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">94</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;cout&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Impossible</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&#160;endl;<br></span><span style="color: #008080; ">95</span>&#160;<span style="color: #000000; ">&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br></span><span style="color: #008080; ">96</span>&#160;<span style="color: #000000; ">}<br></span><span style="color: #008080; ">97</span>&#160;<span style="color: #000000; "><br></span><span style="color: #008080; ">98</span>&#160;<span style="color: #000000; "></span></div><br></div><img src ="http://www.cppblog.com/Yusi-Xiao/aggbug/77383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yusi-Xiao/" target="_blank">肖羽思</a> 2009-03-21 10:30 <a href="http://www.cppblog.com/Yusi-Xiao/archive/2009/03/21/77383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>