﻿<?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++博客-powerwater-文章分类-搜索</title><link>http://www.cppblog.com/powerwater/category/17951.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 11 Feb 2019 11:44:04 GMT</lastBuildDate><pubDate>Mon, 11 Feb 2019 11:44:04 GMT</pubDate><ttl>60</ttl><item><title>三个水杯</title><link>http://www.cppblog.com/powerwater/articles/208495.html</link><dc:creator>龙在江湖</dc:creator><author>龙在江湖</author><pubDate>Sun, 05 Oct 2014 06:18:00 GMT</pubDate><guid>http://www.cppblog.com/powerwater/articles/208495.html</guid><wfw:comment>http://www.cppblog.com/powerwater/comments/208495.html</wfw:comment><comments>http://www.cppblog.com/powerwater/articles/208495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/powerwater/comments/commentRss/208495.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/powerwater/services/trackbacks/208495.html</trackback:ping><description><![CDATA[出处：<a href="http://acm.nyist.net/JudgeOnline/problem.php?pid=21">http://acm.nyist.net/JudgeOnline/problem.php?pid=21</a><br /><div><h2>三个水杯</h2>         <div> <span style="font-size: 14pt;">时间限制：</span><span style="font-size: 14pt;"  highlight"="" id="problem[time_limit]">1000</span><span style="font-size: 14pt;"> ms &nbsp;|&nbsp;           内存限制：</span><span style="font-size: 14pt;"  highlight"="" id="problem[memory_limit]">65535</span><span style="font-size: 14pt;"> KB </span></div>         <div><span style="font-size: 14pt;">难度：</span><span style="font-size: 14pt;"  highlight"="">4</span></div>                    <dl><dt><span style="font-size: 14pt;">描述 </span></dt><dd><span style="font-size: 14pt;">给出三个水杯，大小不一，并且只有最大的水杯的水是装满的，其余两个为空杯子。三个水杯之间相互倒水，并且水杯没有标识，只能根据给出的水杯体积来计算。现在要求你写出一个程序，使其输出使初始状态到达目标状态的最少次数。 </span></dd><dl><dt><span style="font-size: 14pt;">输入</span></dt><dd><span style="font-size: 14pt;">第一行一个整数N(0&lt;N&lt;50)表示N组测试数据</span><br /><span style="font-size: 14pt;"> 接下来每组测试数据有两行，第一行给出三个整数V1 V2 V3 (V1&gt;V2&gt;V3 V1&lt;100 V3&gt;0)表示三个水杯的体积。</span><br /><span style="font-size: 14pt;"> 第二行给出三个整数E1 E2 E3 （体积小于等于相应水杯体积）表示我们需要的最终状态</span></dd><dt><span style="font-size: 14pt;">输出</span></dt><dd><span style="font-size: 14pt;">每行输出相应测试数据最少的倒水次数。如果达不到目标状态输出-1</span></dd><dt><span style="font-size: 14pt;">样例输入</span></dt><dd>             <pre id="sample_input"><span style="font-size: 14pt;">2</span></pre></dd><dd><pre id="sample_input"><span style="font-size: 14pt;">6 3 1</span></pre></dd><dd><pre id="sample_input"><span style="font-size: 14pt;">4 1 1</span></pre></dd><dd><pre id="sample_input"><span style="font-size: 14pt;">9 3 2</span></pre></dd><dd><pre id="sample_input"><span style="font-size: 14pt;">7 1 1</span></pre>           </dd><dt><span style="font-size: 14pt;">样例输出</span></dt><dd>             <pre id="sample_output"><span style="font-size: 14pt;">3</span></pre></dd><dd><pre id="sample_output"><span style="font-size: 14pt;">-1</span></pre>           </dd></dl></dl></div><span style="font-size: 14pt;">参考代码：</span><br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_142231" onclick="this.style.display='none'; Code_Closed_Text_142231.style.display='none'; Code_Open_Image_142231.style.display='inline'; Code_Open_Text_142231.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_142231" style="display: none" onclick="this.style.display='none'; Code_Open_Text_142231.style.display='none'; Code_Closed_Image_142231.style.display='inline'; Code_Closed_Text_142231.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_142231" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Code_Open_Text_142231" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">queue</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdlib</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></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 /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;total;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;v1,&nbsp;v2,&nbsp;v3;<br /></span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;visit[</span><span style="color: #000000; ">105</span><span style="color: #000000; ">][</span><span style="color: #000000; ">105</span><span style="color: #000000; ">][</span><span style="color: #000000; ">105</span><span style="color: #000000; ">];&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">状态是否出现</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;state<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;b,&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ceng;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">最小步数</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;state(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;b&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;c&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ceng&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}b,&nbsp;e;<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;BFS(state&nbsp;begin)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;queue</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">state</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;q;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">q.empty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.pop();<br />&nbsp;&nbsp;&nbsp;&nbsp;q.push(b);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">q.empty())<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;cur&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;q.front();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.pop();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visit[cur.a][cur.b][cur.c]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cur.a&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;e.a&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.b&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;e.b&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.c&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;e.c)&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">找到</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;cur.ceng;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cur.a&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.b&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;v2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">v1-&gt;v2</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;temp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(temp.a,&nbsp;v2&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;temp.b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.a&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.b&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.ceng</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.push(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cur.a&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.c&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;v3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">v1-&gt;v3</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;temp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(temp.a,&nbsp;v3&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;temp.c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.a&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.c&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.ceng</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.push(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cur.b&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.a&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;v1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">v2-&gt;v1</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;temp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(temp.b,&nbsp;v1&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;temp.a);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.a&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.b&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.ceng</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.push(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cur.b&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.c&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;v3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">v2-&gt;v3</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;temp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(temp.b,&nbsp;v3&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;temp.c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.b&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.c&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.ceng</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.push(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cur.c&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.a&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;v1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">v3-&gt;v1</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;temp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(temp.c,&nbsp;v1&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;temp.a);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.c&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.a&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.ceng</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.push(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cur.c&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;cur.b&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;v2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">v3-&gt;v2</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;temp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(temp.c,&nbsp;v2&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;temp.b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.c&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.b&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;tt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visit[temp.a][temp.b][temp.c]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.ceng</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.push(temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</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: #008000; ">//</span><span style="color: #008000; ">没有终状态</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ncase;<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">ncase);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(ncase</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(visit,&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(visit));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d&nbsp;%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">v1,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">v2,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">v3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.a&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v1,&nbsp;b.b&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;b.c&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;b.ceng&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d&nbsp;%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">e.a,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">e.b,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">e.c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(v1&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;e.a&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;e.b&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;e.c)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-1\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;BFS(b));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&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></div></div><img src ="http://www.cppblog.com/powerwater/aggbug/208495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/powerwater/" target="_blank">龙在江湖</a> 2014-10-05 14:18 <a href="http://www.cppblog.com/powerwater/articles/208495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>八数码问题_康托展开 BFS HASH</title><link>http://www.cppblog.com/powerwater/articles/207491.html</link><dc:creator>龙在江湖</dc:creator><author>龙在江湖</author><pubDate>Wed, 02 Jul 2014 10:10:00 GMT</pubDate><guid>http://www.cppblog.com/powerwater/articles/207491.html</guid><wfw:comment>http://www.cppblog.com/powerwater/comments/207491.html</wfw:comment><comments>http://www.cppblog.com/powerwater/articles/207491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/powerwater/comments/commentRss/207491.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/powerwater/services/trackbacks/207491.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;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: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></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: #008000; ">//</span><span style="color: #008000; ">关键点：<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">1.康托展开作为hash函数<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">2.用字符数组作为移动，其他用等价的integer，因为可能将0<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;移到首位而造成错误<br /></span><span style="color: #008000; ">//<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;node{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;str[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">next;<br />&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">last;<br />};<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;dir[</span><span style="color: #000000; ">9</span><span style="color: #000000; ">][</span><span style="color: #000000; ">5</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{{</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">4</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},{</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},{</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">6</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">7</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},{</span><span style="color: #000000; ">4</span><span style="color: #000000; ">,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">4</span><span style="color: #000000; ">,</span><span style="color: #000000; ">8</span><span style="color: #000000; ">,</span><span style="color: #000000; ">6</span><span style="color: #000000; ">},{</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">9</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">4</span><span style="color: #000000; ">,</span><span style="color: #000000; ">8</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},{</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">7</span><span style="color: #000000; ">,</span><span style="color: #000000; ">9</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},{</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">6</span><span style="color: #000000; ">,</span><span style="color: #000000; ">8</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">}&nbsp;&nbsp;};<br /></span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;mhash[</span><span style="color: #000000; ">362880</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">};<br />inline&nbsp;</span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;check(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;num)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;mhash[num];<br />}<br />inline&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;pos0(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;num[])<br />{<br />&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</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">9</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(num[i]</span><span style="color: #000000; ">==</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />}<br />inline&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;move(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;str[],</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;tmp[],&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p0,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;d)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;strcpy(tmp,str);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;o&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tmp[d</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp[p0</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">o;<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp[d</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;print(node&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">end)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">last</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">last);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s/n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">str);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;cantor(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;num)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;fac[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">6</span><span style="color: #000000; ">,</span><span style="color: #000000; ">24</span><span style="color: #000000; ">,</span><span style="color: #000000; ">120</span><span style="color: #000000; ">,</span><span style="color: #000000; ">720</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5040</span><span style="color: #000000; ">,</span><span style="color: #000000; ">40320</span><span style="color: #000000; ">,</span><span style="color: #000000; ">362880</span><span style="color: #000000; ">};<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;m[</span><span style="color: #000000; ">9</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">};<br />&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</span><span style="color: #000000; ">=</span><span style="color: #000000; ">8</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">--</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">num</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="color: #000000; ">/=</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&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</span><span style="color: #000000; ">=</span><span style="color: #000000; ">7</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">--</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;count</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&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</span><span style="color: #000000; ">=</span><span style="color: #000000; ">8</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">i;j</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(m[j]</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">m[i])count</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">(count</span><span style="color: #000000; ">*</span><span style="color: #000000; ">fac[</span><span style="color: #000000; ">8</span><span style="color: #000000; ">-</span><span style="color: #000000; ">i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;index;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;strtoint(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;str[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&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</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">9</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum</span><span style="color: #000000; ">*</span><span style="color: #000000; ">10</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;str[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">'</span><span style="color: #000000; ">0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;sum;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">cout&lt;&lt;strtoint(str)&lt;&lt;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">cout&lt;&lt;cantor(12345678)&lt;&lt;cantor(102345678)&lt;&lt;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">cout&lt;&lt;move(120345678,3,2)&lt;&lt;endl;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;start[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">],goal[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s&nbsp;%s</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,start,goal);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">printf("%s/n%s/n",start,goal);</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;goal2</span><span style="color: #000000; ">=</span><span style="color: #000000; ">strtoint(goal);<br />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">root</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;node;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">current</span><span style="color: #000000; ">=</span><span style="color: #000000; ">root;<br />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">end</span><span style="color: #000000; ">=</span><span style="color: #000000; ">current;<br />&nbsp;&nbsp;&nbsp;&nbsp;strcpy(current</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">str,start);<br />&nbsp;&nbsp;&nbsp;&nbsp;current</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">last</span><span style="color: #000000; ">=</span><span style="color: #000000; ">current</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">next</span><span style="color: #000000; ">=</span><span style="color: #000000; ">NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(current</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">NULL){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">int&nbsp;index;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;num&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;strtoint(current</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p0</span><span style="color: #000000; ">=</span><span style="color: #000000; ">pos0(current</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n</span><span style="color: #000000; ">=</span><span style="color: #000000; ">dir[p0</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mhash[cantor(num)]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&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;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;change[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move(current</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">str,change,p0,dir[p0</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="color: #000000; ">=</span><span style="color: #000000; ">strtoint(change);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index</span><span style="color: #000000; ">=</span><span style="color: #000000; ">cantor(num);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(num</span><span style="color: #000000; ">==</span><span style="color: #000000; ">goal2){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Get&nbsp;to&nbsp;result/n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(end);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(mhash[index]</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">mhash[index]=1;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">next</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;node;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #000000; ">=</span><span style="color: #000000; ">end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">next;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">last</span><span style="color: #000000; ">=</span><span style="color: #000000; ">current;&nbsp;end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">next</span><span style="color: #000000; ">=</span><span style="color: #000000; ">NULL;&nbsp;strcpy(end</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">str,change);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current</span><span style="color: #000000; ">=</span><span style="color: #000000; ">current</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">next;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span></div> <br /><br /><div><p>关于康托的讲解：</p> <p> </p><p> </p><p>康托展开　　</p> <p>康托展开的公式</p> <p>&nbsp;</p> <p>　　把一个整数X展开成如下形式：</p> <p>　　X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0!</p> <p>　　其中，a为整数，并且0&lt;=a[i]&lt;i(1&lt;=i&lt;=n)</p> <p>&nbsp;</p> <p>康托展开的应用实例</p> <p>&nbsp;</p> <p>　　{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。</p> <p>　　代表的数字 1 2 3 4 5 6 也就是把10进制数与一个排列对应起来。</p> <p>　　他们间的对应关系可由康托展开来找到。</p> <p>　　如我想知道321是{1,2,3}中第几个大的数可以这样考虑 ：</p> <p>　　第一位是3，当第一位的数小于3时，那排列数小于321 如 123、 213 ，小于3的数有1、2  。所以有2*2!个。再看小于第二位2的：小于2的数只有一个就是1 ，所以有1*1!=1  所以小于321的{1,2,3}排列数有2*2!+1*1!=5个。所以321是第6个大的数。 2*2!+1*1!是康托展开。</p> <p>　　再举个例子：1324是{1,2,3,4}排列数中第几个大的数：第一位是1小于1的数没有，是0个 0*3!  第二位是3小于3的数有1和2，但1已经在第一位了，所以只有一个数2 1*2! 。第三位是2小于2的数是1，但1在第一位，所以有0个数 0*1!  ，所以比1324小的排列有0*3!+1*2!+0*1!=2个，1324是第三个大数。&nbsp;</p> <p>&nbsp;</p> <p>康托展开的代码实现</p> <p>后文的PASCAL程序经检验可以正确工作，并指示出了一个简洁的计算方法，和前文的运算思路略有不同，不需要检验某数码是否使用过，只需检查第(n+1-i)位之后比第(n+1-i)位小的位的数量，将这个数量作为公式中的a[i]。(1&lt;=i&lt;=n)</p> <p>　　并附此算法C++版本。</p> <p>　　康托展开的代码（C++语言）：</p> <p>　　unsigned long cantor(unsigned long S)</p> <p>　　{</p> <p>　　long x=0,i,p,k,j;</p> <p>　　bool hash[8]={false};</p> <p>　　for (i=8;i&gt;=2;i--)</p> <p>　　{</p> <p>　　k=S&gt;&gt; 3*(i-1);</p> <p>　　S-=k&lt;&lt;3*(i-1);</p> <p>　　hash[k]=true;</p> <p>　　p=k;</p> <p>　　for (j=0;j&lt;=k-1;j++)</p> <p>　　if (hash[j])</p> <p>　　p--;</p> <p>　　x+=fac[i-1]*p;</p> <p>　　}</p> <p>　　return x;</p> <p>　　}&nbsp;</p> <p>　　康托展开的代码（Pascal语言）：</p> <p>　　s为数组，用来存储要求的数，形如(1,3,2,4)。</p> <p>　　n为数组中元素个数。</p> <p>　　fac[x]为x!</p> <p>　　*function cantor:longint:;</p> <p>　　*var</p> <p>　　*　i,j,temp:integer;</p> <p>　　*　num:longint;</p> <p>　　*begin</p> <p>　　*　num:=0;</p> <p>　　*　for i:=1 to n-1 do</p> <p>　　*　begin</p> <p>　　*　temp:=0;</p> <p>　　*　for j:=i+1 to n do&nbsp;</p> <p>　　*　if s[j]&lt;s[ i ] then inc(temp);</p> <p>　　*　num:=num+fac[n-i]*temp;</p> <p>　　*　end;</p> <p>　　*cantor:=num+1;</p> <p>　　*end;</p> <p>　　康托展开的代码（C语言）：</p> <p>　　//参数int s[]为待展开之数的各位数字,如需展开2134,则s[4]={2,1,3,4}.</p> <p>　　int fac[]={1,1,2,6,24,120,720,5040,40320,362880};//...</p> <p>　　long cantor(int s[],int n){</p> <p>　　int i,j,temp,num;</p> <p>　　num=0;</p> <p>　　for(i=1;i&lt;n;i++){</p> <p>　　temp=0;</p> <p>　　for(int j=i+1;j&lt;=n;j++){</p> <p>　　if(s[j]&lt;s[i]) temp++;</p> <p>　　}</p> <p>　　num+=fac[n-i]*temp;</p> <p>　　}</p> <p>　　return (num+1);</p></div><img src ="http://www.cppblog.com/powerwater/aggbug/207491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/powerwater/" target="_blank">龙在江湖</a> 2014-07-02 18:10 <a href="http://www.cppblog.com/powerwater/articles/207491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1168: 【提高】老鼠闯迷宫</title><link>http://www.cppblog.com/powerwater/articles/187517.html</link><dc:creator>龙在江湖</dc:creator><author>龙在江湖</author><pubDate>Fri, 17 Aug 2012 12:55:00 GMT</pubDate><guid>http://www.cppblog.com/powerwater/articles/187517.html</guid><wfw:comment>http://www.cppblog.com/powerwater/comments/187517.html</wfw:comment><comments>http://www.cppblog.com/powerwater/articles/187517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/powerwater/comments/commentRss/187517.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/powerwater/services/trackbacks/187517.html</trackback:ping><description><![CDATA[<div><center><h2><a href="http://oj.jzxx.net/problem.php?id=1168">1168: 【提高】老鼠闯迷宫</a></h2>时间限制: 1 Sec&nbsp;&nbsp;内存限制: 16 MB<br />提交: 595&nbsp;&nbsp;解决: 207<br />[<a href="http://oj.jzxx.net/submitpage.php?id=1168">提交</a>][<a href="http://oj.jzxx.net/problemstatus.php?id=1168">状态</a>][<a href="http://oj.jzxx.net/bbs.php?pid=1168">讨论版</a>]</center><h2>题目描述</h2><div><p>编一个程序，找出一条通过迷宫的路径。这里有兰色方块的区域表示走不通，将一只老鼠从入口处经过迷宫到出口处的一条通路打印出来。</p> <p>&nbsp;<img alt="" src="http://oj.jzxx.net/upload/1168.jpg" /></p> <p>老鼠寻路有8个方向,老鼠先探索1方向,若不通就改2方向,再不通再改3方向.........如图B.</p></div><h2>输入</h2><div><p>第1行2个整数 m,n 表示迷宫有m 行n列 （m ＜＝ 10,n ＜＝ 10） 下面m行,每行n个数据</p></div><h2>输出</h2><div><p>一条路,用坐标点表示,中间用"-"连接</p></div><h2>样例输入</h2> 			<div><span>7 6 <br />0 0 1 0 1 0 <br />0 1 1 1 1 1 <br />1 0 0 1 0 0 <br />0 0 1 0 0 1 <br />1 1 0 0 1 0 <br />0 0 1 0 0 1 <br />0 1 0 0 1 0</span></div><h2>样例输出</h2> 			<div>(1,1)-(1,2)-(2,1)-(3,2)-(3,3)-(4,4)-(4,5)-(5,6)-(6,5)-(7,6)</div><h2>提示</h2> 			<p>注意：当不止一条路径时，老鼠选择探索方向的顺序直接影响着输出的第一条路径。本题规定了老鼠探索方向的顺序。</p></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_205338" onclick="this.style.display='none'; Code_Closed_Text_205338.style.display='none'; Code_Open_Image_205338.style.display='inline'; Code_Open_Text_205338.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_205338" style="display: none" onclick="this.style.display='none'; Code_Open_Text_205338.style.display='none'; Code_Closed_Image_205338.style.display='inline'; Code_Closed_Text_205338.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_205338" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">code</span><span id="Code_Open_Text_205338" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</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: #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: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;N(</span><span style="color: #000000; ">15</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;dx[]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">};<br /></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;dy[]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">};<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;node{&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x,y;};<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;m,n,map[N][N],t(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;visited[N][N]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},found(</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">);<br />node&nbsp;path[</span><span style="color: #000000; ">120</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;search(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x0,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y0)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(found)&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(x0</span><span style="color: #000000; ">==</span><span style="color: #000000; ">m</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">y0</span><span style="color: #000000; ">==</span><span style="color: #000000; ">n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">,</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">t;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">path[i].x</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">,</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">path[i].y</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;found</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x1,y1;<br />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;p;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">8</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x0</span><span style="color: #000000; ">+</span><span style="color: #000000; ">dx[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">y0</span><span style="color: #000000; ">+</span><span style="color: #000000; ">dy[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(x1</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">||</span><span style="color: #000000; ">x1</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">m</span><span style="color: #000000; ">||</span><span style="color: #000000; ">y1</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">||</span><span style="color: #000000; ">y1</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">n)&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(map[x1][y1])&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[x1][y1]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x1;&nbsp;p.y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">y1;&nbsp;&nbsp;path[t</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(x1,y1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[x1][y1]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">t;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">m</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">m;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">map[i][j];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">map[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">])<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">cin.get();cin.get();</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&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; ">;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span></span></div><img src ="http://www.cppblog.com/powerwater/aggbug/187517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/powerwater/" target="_blank">龙在江湖</a> 2012-08-17 20:55 <a href="http://www.cppblog.com/powerwater/articles/187517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1167: 【提高】跳马</title><link>http://www.cppblog.com/powerwater/articles/187455.html</link><dc:creator>龙在江湖</dc:creator><author>龙在江湖</author><pubDate>Fri, 17 Aug 2012 02:12:00 GMT</pubDate><guid>http://www.cppblog.com/powerwater/articles/187455.html</guid><wfw:comment>http://www.cppblog.com/powerwater/comments/187455.html</wfw:comment><comments>http://www.cppblog.com/powerwater/articles/187455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/powerwater/comments/commentRss/187455.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/powerwater/services/trackbacks/187455.html</trackback:ping><description><![CDATA[<div id="main">
<center>
<h2><a href="http://oj.jzxx.net/problem.php?id=1167">
<h2>1167: 【提高】跳马</h2></a><span class="green">时间限制: </span>1 Sec&nbsp;&nbsp;<span class="green">内存限制: </span>16 MB<br /><span class="green">提交: </span>613&nbsp;&nbsp;<span class="green">解决: </span>218<br />[<a href="http://oj.jzxx.net/submitpage.php?id=1167">提交</a>][<a href="http://oj.jzxx.net/problemstatus.php?id=1167">状态</a>][<a href="http://oj.jzxx.net/bbs.php?pid=1167">讨论版</a>]</h2></center>
<h2>题目描述</h2>
<div class="content">
<p>国际象棋中马走&#8220;日&#8221;，现请编程输出马从入口跳到出口的一条路径。棋盘上有些点是不能落脚的。如图A中值为1的点不能落脚，值为0的点可落脚。</p>
<p>&nbsp;<img alt="" src="http://oj.jzxx.net/upload/1167.jpg" /></p>
<p>马在格子中，有8个方向可以探索。探索顺序按图B中的序号顺序进行。</p></div>
<h2>输入</h2>
<div class="content">
<p>第一行两个整数m,n 表示棋盘有m行n列（m＜＝１０,n＜＝１０） 下面m行每行n个数，全是0或1 ，1表示不能落脚。</p></div>
<h2>输出</h2>
<div class="content">
<p>一条路径用坐标点表示中间用&#8220;-&#8221;隔开。</p></div>
<h2>样例输入</h2>
<div class="content"><span class="sampledata"><pre>6  6
0 1 1 1 1 1
1 1 1 0 1 1
1 0 1 1 1 0
1 1 1 0 0 1
1 1 0 1 1 1
1 1 1 1 0 0</pre></span></div>
<h2>样例输出</h2>
<div class="content"><span class="sampledata"><pre>(1,1)-(3,2)-(5,3)-(6,5)-(4,4)-(3,6)-(2,4)-(4,5)-(6,6)
(1,1)-(3,2)-(5,3)-(4,5)-(6,6)
(1,1)-(3,2)-(4,4)-(6,5)-(5,3)-(4,5)-(6,6)
(1,1)-(3,2)-(4,4)-(3,6)-(2,4)-(4,5)-(6,6)
(1,1)-(3,2)-(2,4)-(4,5)-(6,6)
(1,1)-(3,2)-(2,4)-(3,6)-(4,4)-(6,5)-(5,3)-(4,5)-(6,6)</pre></span></div>
<h2>提示</h2>
<div class="content">
<p>&nbsp;</p>
<p>注意： 当不止一条路径时，马选择探索方向的顺序直接影响着输出的路径。 本题规定了马探索方向的顺序。</p>
<p>&nbsp;</p>
<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_101053" onclick="this.style.display='none'; Code_Closed_Text_101053.style.display='none'; Code_Open_Image_101053.style.display='inline'; Code_Open_Text_101053.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_101053" onclick="this.style.display='none'; Code_Open_Text_101053.style.display='none'; Code_Closed_Image_101053.style.display='inline'; Code_Closed_Text_101053.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_101053">code</span><span style="display: none" id="Code_Open_Text_101053"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" 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 /><img id="Codehighlighter1_56_78_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_78_Open_Text.style.display='none'; Codehighlighter1_56_78_Closed_Image.style.display='inline'; Codehighlighter1_56_78_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_56_78_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_56_78_Closed_Text.style.display='none'; Codehighlighter1_56_78_Open_Image.style.display='inline'; Codehighlighter1_56_78_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.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;dx[</span><span style="color: #000000">8</span><span style="color: #000000">]</span><span style="color: #000000">=</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_56_78_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_56_78_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">}</span></span><span style="color: #000000">;<br /><img id="Codehighlighter1_97_119_Open_Image" onclick="this.style.display='none'; Codehighlighter1_97_119_Open_Text.style.display='none'; Codehighlighter1_97_119_Closed_Image.style.display='inline'; Codehighlighter1_97_119_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_97_119_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_97_119_Closed_Text.style.display='none'; Codehighlighter1_97_119_Open_Image.style.display='inline'; Codehighlighter1_97_119_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.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;dy[</span><span style="color: #000000">8</span><span style="color: #000000">]</span><span style="color: #000000">=</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_97_119_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_97_119_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">}</span></span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;node<br /><img id="Codehighlighter1_134_146_Open_Image" onclick="this.style.display='none'; Codehighlighter1_134_146_Open_Text.style.display='none'; Codehighlighter1_134_146_Closed_Image.style.display='inline'; Codehighlighter1_134_146_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_134_146_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_134_146_Closed_Text.style.display='none'; Codehighlighter1_134_146_Open_Image.style.display='inline'; Codehighlighter1_134_146_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_134_146_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_134_146_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,y;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m,n,map[</span><span style="color: #000000">15</span><span style="color: #000000">][</span><span style="color: #000000">15</span><span style="color: #000000">];<br /><img id="Codehighlighter1_191_193_Open_Image" onclick="this.style.display='none'; Codehighlighter1_191_193_Open_Text.style.display='none'; Codehighlighter1_191_193_Closed_Image.style.display='inline'; Codehighlighter1_191_193_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_191_193_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_191_193_Closed_Text.style.display='none'; Codehighlighter1_191_193_Open_Image.style.display='inline'; Codehighlighter1_191_193_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;visited[</span><span style="color: #000000">15</span><span style="color: #000000">][</span><span style="color: #000000">15</span><span style="color: #000000">]</span><span style="color: #000000">=</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_191_193_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_191_193_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">0</span><span style="color: #000000">}</span></span><span style="color: #000000">,found(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />node&nbsp;s[</span><span style="color: #000000">120</span><span style="color: #000000">];&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t(</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">ifstream&nbsp;cin("p1167.in");<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;ofstream&nbsp;cout("p1167.out");</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;search(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x0,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y0)<br /><img id="Codehighlighter1_320_756_Open_Image" onclick="this.style.display='none'; Codehighlighter1_320_756_Open_Text.style.display='none'; Codehighlighter1_320_756_Closed_Image.style.display='inline'; Codehighlighter1_320_756_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_320_756_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_320_756_Closed_Text.style.display='none'; Codehighlighter1_320_756_Open_Image.style.display='inline'; Codehighlighter1_320_756_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_320_756_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_320_756_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;p;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" 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">&nbsp;(x0</span><span style="color: #000000">==</span><span style="color: #000000">m</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">y0</span><span style="color: #000000">==</span><span style="color: #000000">n)<br /><img id="Codehighlighter1_353_499_Open_Image" onclick="this.style.display='none'; Codehighlighter1_353_499_Open_Text.style.display='none'; Codehighlighter1_353_499_Closed_Image.style.display='inline'; Codehighlighter1_353_499_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_353_499_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_353_499_Closed_Text.style.display='none'; Codehighlighter1_353_499_Open_Image.style.display='inline'; Codehighlighter1_353_499_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_353_499_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_353_499_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">'</span><span style="color: #000000">(</span><span style="color: #000000">'</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">s[</span><span style="color: #000000">0</span><span style="color: #000000">].x</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">s[</span><span style="color: #000000">0</span><span style="color: #000000">].y</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">'</span><span style="color: #000000">)</span><span style="color: #000000">'</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" 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">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">t;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">-(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">s[i].x</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">s[i].y</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">'</span><span style="color: #000000">)</span><span style="color: #000000">'</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img alt="" 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;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" 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">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">8</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img id="Codehighlighter1_525_753_Open_Image" onclick="this.style.display='none'; Codehighlighter1_525_753_Open_Text.style.display='none'; Codehighlighter1_525_753_Closed_Image.style.display='inline'; Codehighlighter1_525_753_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_525_753_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_525_753_Closed_Text.style.display='none'; Codehighlighter1_525_753_Open_Image.style.display='inline'; Codehighlighter1_525_753_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_525_753_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_525_753_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.x</span><span style="color: #000000">=</span><span style="color: #000000">x0</span><span style="color: #000000">+</span><span style="color: #000000">dx[i];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.y</span><span style="color: #000000">=</span><span style="color: #000000">y0</span><span style="color: #000000">+</span><span style="color: #000000">dy[i];<br /><img alt="" 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">&nbsp;(p.x</span><span style="color: #000000">&lt;=</span><span style="color: #000000">0</span><span style="color: #000000">||</span><span style="color: #000000">p.x</span><span style="color: #000000">&gt;</span><span style="color: #000000">m</span><span style="color: #000000">||</span><span style="color: #000000">p.y</span><span style="color: #000000">&lt;=</span><span style="color: #000000">0</span><span style="color: #000000">||</span><span style="color: #000000">p.y</span><span style="color: #000000">&gt;</span><span style="color: #000000">n)&nbsp;</span><span style="color: #0000ff">continue</span><span style="color: #000000">;<br /><img alt="" 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">&nbsp;(visited[p.x][p.y]</span><span style="color: #000000">||</span><span style="color: #000000">map[p.x][p.y]</span><span style="color: #000000">==</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">continue</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s[t</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">p;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visited[p.x][p.y]</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(p.x,p.y);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">t;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visited[p.x][p.y]</span><span style="color: #000000">=</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_769_1025_Open_Image" onclick="this.style.display='none'; Codehighlighter1_769_1025_Open_Text.style.display='none'; Codehighlighter1_769_1025_Closed_Image.style.display='inline'; Codehighlighter1_769_1025_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_769_1025_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_769_1025_Closed_Text.style.display='none'; Codehighlighter1_769_1025_Open_Image.style.display='inline'; Codehighlighter1_769_1025_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_769_1025_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_769_1025_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">n;<br /><img alt="" 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">&nbsp;(j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;=</span><span style="color: #000000">n</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">;j</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[</span><span style="color: #000000">0</span><span style="color: #000000">][j]</span><span style="color: #000000">=</span><span style="color: #000000">map[n</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">][j]</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img alt="" 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">&nbsp;(i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;=</span><span style="color: #000000">n</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[i][</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">map[i][n</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" 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">&nbsp;(i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;=</span><span style="color: #000000">m;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" 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">&nbsp;(j</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;=</span><span style="color: #000000">n;j</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">map[i][j];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;s[</span><span style="color: #000000">0</span><span style="color: #000000">].x</span><span style="color: #000000">=</span><span style="color: #000000">s[</span><span style="color: #000000">0</span><span style="color: #000000">].y</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;visited[</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">1</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;search(</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" 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 /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></span></div>
<p><br /><br /></p></div></div><img src ="http://www.cppblog.com/powerwater/aggbug/187455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/powerwater/" target="_blank">龙在江湖</a> 2012-08-17 10:12 <a href="http://www.cppblog.com/powerwater/articles/187455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1154【基础】N皇后问题</title><link>http://www.cppblog.com/powerwater/articles/187426.html</link><dc:creator>龙在江湖</dc:creator><author>龙在江湖</author><pubDate>Thu, 16 Aug 2012 15:13:00 GMT</pubDate><guid>http://www.cppblog.com/powerwater/articles/187426.html</guid><wfw:comment>http://www.cppblog.com/powerwater/comments/187426.html</wfw:comment><comments>http://www.cppblog.com/powerwater/articles/187426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/powerwater/comments/commentRss/187426.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/powerwater/services/trackbacks/187426.html</trackback:ping><description><![CDATA[<div><center><h2>1154: 【基础】<a href="http://oj.jzxx.net/problem.php?id=1154">N皇后问题</a></h2>时间限制: 1 Sec&nbsp;&nbsp;内存限制: 16 MB<br />提交: 787&nbsp;&nbsp;解决: 309<br />[<a href="http://oj.jzxx.net/submitpage.php?id=1154">提交</a>][<a href="http://oj.jzxx.net/problemstatus.php?id=1154">状态</a>][<a href="http://oj.jzxx.net/bbs.php?pid=1154">讨论版</a>]</center><h2>题目描述</h2><div><p>在一个N*N的棋盘上放置N个皇后，且使得每两个之间不能互相攻击，也就是使得每两个不在同一行，同一列和同一斜角线上。以下为N=8时问题的一个解：</p> <p>&nbsp;<img alt="" src="http://oj.jzxx.net/upload/1154.jpg" /></p></div><h2>输入</h2><div><p>一个整数N（4&lt;=N&lt;=10)</p></div><h2>输出</h2><div><p>N皇后的所有解。</p></div><h2>样例输入</h2> 			<div>4</div><h2>样例输出</h2> 			<div><span> <div>&nbsp;4&nbsp;&nbsp; Q&nbsp;&nbsp; &nbsp;<br />&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Q<br />&nbsp;2 Q&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp; Q &nbsp;<br />&nbsp;&nbsp; a b c d<br /><br /><br />&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp; Q &nbsp;<br />&nbsp;3 Q&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Q<br />&nbsp;1&nbsp;&nbsp; Q&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; a b c d</div></span></div><h2>提示</h2> 			<p>输出格式说明： a的场宽为4，其它数字和字母的场宽均为2，两种解法之间空一行。</p></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_231053" onclick="this.style.display='none'; Code_Closed_Text_231053.style.display='none'; Code_Open_Image_231053.style.display='inline'; Code_Open_Text_231053.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" height="16" align="top" width="11"><img id="Code_Open_Image_231053" style="display: none" onclick="this.style.display='none'; Code_Open_Text_231053.style.display='none'; Code_Closed_Image_231053.style.display='inline'; Code_Closed_Text_231053.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" height="16" align="top" width="11"><span id="Code_Closed_Text_231053" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">code</span><span id="Code_Open_Text_231053" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</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: #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: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;N(</span><span style="color: #000000; ">30</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;a[N]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},b[N]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},c[N]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">},f[N][N]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">};<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,t(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;search(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(i</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(t</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">setw(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">-</span><span style="color: #000000; ">i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(f[i][j])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">setw(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">Q</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">setw(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">setw(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;ch</span><span style="color: #000000; ">=</span><span style="color: #000000; ">'</span><span style="color: #000000; ">a</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;ch</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">a</span><span style="color: #000000; ">'</span><span style="color: #000000; ">+</span><span style="color: #000000; ">n;ch</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">setw(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">ch;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">a[j]</span><span style="color: #000000; ">&amp;&amp;!</span><span style="color: #000000; ">b[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">j]</span><span style="color: #000000; ">&amp;&amp;!</span><span style="color: #000000; ">c[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">n])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">c[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">n]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">f[i][j]</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">b[i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">c[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">n]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">f[i][j]</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n;<br />&nbsp;&nbsp;&nbsp;&nbsp;search(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">cin.get();cin.get();</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&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 />}<br /></span></span></div><img src ="http://www.cppblog.com/powerwater/aggbug/187426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/powerwater/" target="_blank">龙在江湖</a> 2012-08-16 23:13 <a href="http://www.cppblog.com/powerwater/articles/187426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2017: 【提高】优美连接</title><link>http://www.cppblog.com/powerwater/articles/187329.html</link><dc:creator>龙在江湖</dc:creator><author>龙在江湖</author><pubDate>Wed, 15 Aug 2012 14:52:00 GMT</pubDate><guid>http://www.cppblog.com/powerwater/articles/187329.html</guid><wfw:comment>http://www.cppblog.com/powerwater/comments/187329.html</wfw:comment><comments>http://www.cppblog.com/powerwater/articles/187329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/powerwater/comments/commentRss/187329.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/powerwater/services/trackbacks/187329.html</trackback:ping><description><![CDATA[<center><h2></h2></center><div><div><div align="center"><a href="http://oj.jzxx.net/problem.php?id=2017">2017: 【提高】优美连接</a></div><div align="center">时间限制: 1 Sec&nbsp; 内存限制: 32 MB<br />提交: 9&nbsp; 解决: 7<br />[提交][状态][讨论版]</div>题目描述<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给出n个2位整数（1&#8804;n&#8804;10），将这n个数拼成一个长2n位长整数：y=x1 x2 x3&#8230;&#8230;x2n<br />然后进行计算: d=&#9474;x1-x2&#9474;+&#9474;x2-x3&#9474;+&#8230;.+ &#9474;x2n-1-x2n&#9474;<br />&nbsp;&nbsp; &nbsp;&nbsp; 问题：当n个数给出之后，找出一种拼接方法，使d最小。<br />&nbsp;&nbsp; &nbsp;&nbsp; 例如：n=3 时，三个数分别为： 26,17,34<br />&nbsp;&nbsp; &nbsp;&nbsp; 拼接方法有：<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 26 17 34 d=&#9474;2-6&#9474;+&#9474;6-1&#9474;+&#9474;1-7&#9474;+&#9474;7-3&#9474;+&#9474;3-4&#9474;=20<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 26 34 17 d=&#9474;2-6&#9474;+&#9474;6-3&#9474;+&#9474;3-4&#9474;+&#9474;4-1&#9474;+&#9474;1-7&#9474;=17<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &#8230;&#8230;<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 17 34 26 d=&#9474;1-7&#9474;+&#9474;7-3&#9474;+&#9474;3-4&#9474;+&#9474;4-2&#9474;+&#9474;2-6&#9474;=17<br />&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 其中最小d为17<br />输入<br />&nbsp;&nbsp; &nbsp;&nbsp; 第一行一个整数n，第二行n个整数<br />输出<br />&nbsp;&nbsp; &nbsp;&nbsp; 一个整数，即最小的d<br />样例输入<br />&nbsp;&nbsp; &nbsp;&nbsp; 3 26 17 34<br />样例输出<br />&nbsp;&nbsp; &nbsp;&nbsp; 17<br />提示<br /><br />来源</div><p><a href="http://oj.jzxx.net/problemset.php?search=2011%E5%B9%B4%E6%B1%9F%E8%8B%8F%E7%9C%81%E5%B0%8F%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF%E5%AD%A6%EF%BC%88%E8%AE%A1%E7%AE%97%E6%9C%BA%EF%BC%89%E5%A5%A5%E8%B5%9B">2011年江苏省小学生信息学（计算机）奥赛</a></p></div><div><p><a href="http://oj.jzxx.net/problemset.php?search=2011%E5%B9%B4%E6%B1%9F%E8%8B%8F%E7%9C%81%E5%B0%8F%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF%E5%AD%A6%EF%BC%88%E8%AE%A1%E7%AE%97%E6%9C%BA%EF%BC%89%E5%A5%A5%E8%B5%9B"></a></p></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_225135" onclick="this.style.display='none'; Code_Closed_Text_225135.style.display='none'; Code_Open_Image_225135.style.display='inline'; Code_Open_Text_225135.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" height="16" align="top" width="11"><img id="Code_Open_Image_225135" style="display: none" onclick="this.style.display='none'; Code_Open_Text_225135.style.display='none'; Code_Closed_Image_225135.style.display='inline'; Code_Closed_Text_225135.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" height="16" align="top" width="11"><span id="Code_Closed_Text_225135" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">code</span><span id="Code_Open_Text_225135" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include</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: #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: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,a[</span><span style="color: #000000; ">20</span><span style="color: #000000; ">],ans(</span><span style="color: #000000; ">0x7fffffff</span><span style="color: #000000; ">),t(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;f[</span><span style="color: #000000; ">20</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">};<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;abs(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;x</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">?</span><span style="color: #000000; ">x:</span><span style="color: #000000; ">-</span><span style="color: #000000; ">x;<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;search(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;t,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;prev,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;d;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(k</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(t</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">ans)&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">t;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">f[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d</span><span style="color: #000000; ">=</span><span style="color: #000000; ">abs(a[prev]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">-</span><span style="color: #000000; ">a[i]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">10</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">d;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i]</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(t,i,k</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i]</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">d;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">a[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">abs(a[i]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">10</span><span style="color: #000000; ">-</span><span style="color: #000000; ">a[i]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i]</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(t,i,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i]</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">ans</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">system("pause");</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&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 />}<br /></span></span></div><img src ="http://www.cppblog.com/powerwater/aggbug/187329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/powerwater/" target="_blank">龙在江湖</a> 2012-08-15 22:52 <a href="http://www.cppblog.com/powerwater/articles/187329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>N皇后问题</title><link>http://www.cppblog.com/powerwater/articles/159494.html</link><dc:creator>龙在江湖</dc:creator><author>龙在江湖</author><pubDate>Wed, 02 Nov 2011 04:52:00 GMT</pubDate><guid>http://www.cppblog.com/powerwater/articles/159494.html</guid><wfw:comment>http://www.cppblog.com/powerwater/comments/159494.html</wfw:comment><comments>http://www.cppblog.com/powerwater/articles/159494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/powerwater/comments/commentRss/159494.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/powerwater/services/trackbacks/159494.html</trackback:ping><description><![CDATA[<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">#include</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>&nbsp;<span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iterator</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000"></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;5</span>&nbsp;<span style="color: #000000"></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(</span><span style="color: #000000">20</span><span style="color: #000000">);<br /></span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;p[N];<br /></span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;a[N],b[</span><span style="color: #000000">2</span><span style="color: #000000">*</span><span style="color: #000000">N],c[</span><span style="color: #000000">2</span><span style="color: #000000">*</span><span style="color: #000000">N];&nbsp;<br /></span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,tot;<br /></span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;search(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i)<br /></span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(i</span><span style="color: #000000">&gt;</span><span style="color: #000000">n)<br /></span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy(p</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">,p</span><span style="color: #000000">+</span><span style="color: #000000">n</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">,ostream_iterator</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">(cout,</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">));<br /></span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /></span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;;<br /></span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;=</span><span style="color: #000000">n;j</span><span style="color: #000000">++</span><span style="color: #000000">)<br /></span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">a[j]</span><span style="color: #000000">&amp;&amp;!</span><span style="color: #000000">b[i</span><span style="color: #000000">+</span><span style="color: #000000">j]</span><span style="color: #000000">&amp;&amp;!</span><span style="color: #000000">c[i</span><span style="color: #000000">-</span><span style="color: #000000">j</span><span style="color: #000000">+</span><span style="color: #000000">n])<br /></span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i]</span><span style="color: #000000">=</span><span style="color: #000000">j;<br /></span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[j]</span><span style="color: #000000">=</span><span style="color: #000000">b[i</span><span style="color: #000000">+</span><span style="color: #000000">j]</span><span style="color: #000000">=</span><span style="color: #000000">c[i</span><span style="color: #000000">-</span><span style="color: #000000">j</span><span style="color: #000000">+</span><span style="color: #000000">n]</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /></span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[j]</span><span style="color: #000000">=</span><span style="color: #000000">b[i</span><span style="color: #000000">+</span><span style="color: #000000">j]</span><span style="color: #000000">=</span><span style="color: #000000">c[i</span><span style="color: #000000">-</span><span style="color: #000000">j</span><span style="color: #000000">+</span><span style="color: #000000">n]</span><span style="color: #000000">=</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /></span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /></span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">n)<br /></span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(a,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(a));<br /></span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(b,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(b));<br /></span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(c,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(c));<br /></span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search(</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">tot</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /></span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">&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>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000"></span></div><br /><img src ="http://www.cppblog.com/powerwater/aggbug/159494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/powerwater/" target="_blank">龙在江湖</a> 2011-11-02 12:52 <a href="http://www.cppblog.com/powerwater/articles/159494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>