﻿<?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++博客-Sai</title><link>http://www.cppblog.com/Sai/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 23:04:07 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 23:04:07 GMT</pubDate><ttl>60</ttl><item><title>还是POJ3984__BFS【四种记录路径的方法总结】</title><link>http://www.cppblog.com/Sai/archive/2012/05/14/174907.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Mon, 14 May 2012 15:45:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2012/05/14/174907.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/174907.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2012/05/14/174907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/174907.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/174907.html</trackback:ping><description><![CDATA[方法一就上一篇最原始的stack保护路径，方法二，三，四（其实一样）是递归回溯深搜路径，只不过存储结构不同，有的很妙，自己的很糟TAT。<br />后篇将有深搜方法和不用STL做出的。<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;1</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">#include</span><span style="background-color: #eeeeee; font-size: 13px; ">&lt;</span><span style="background-color: #eeeeee; font-size: 13px; ">iostream</span><span style="background-color: #eeeeee; font-size: 13px; ">&gt;</span><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"><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;#include&lt;queue&gt;<br /><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;#include&lt;stack&gt;<br /><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br /><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">===================================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span>&nbsp;maze[5][5];<br /><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;mark[5][5];<br /><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;Point&nbsp;<br /><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,y;<br /><span style="color: #008080; ">&nbsp;11</span>&nbsp;};<br /><span style="color: #008080; ">&nbsp;12</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;dir[4][2]={0,1,0,-1,1,0,-1,0};<br /><span style="color: #008080; ">&nbsp;14</span>&nbsp;Point&nbsp;dis[5][5];<br /><span style="color: #008080; ">&nbsp;15</span>&nbsp;stack&lt;Point&gt;&nbsp;S;<br /><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;map[5][5];<span style="color: #008000; ">//</span><span style="color: #008000; ">第三种记录方法<br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">=====================================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;InMap(<span style="color: #0000FF; ">int</span>&nbsp;i,<span style="color: #0000FF; ">int</span>&nbsp;j)<br /><span style="color: #008080; ">&nbsp;20</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(i&gt;=0&amp;&amp;&nbsp;i&lt;=4&nbsp;&amp;&amp;&nbsp;j&gt;=0&nbsp;&amp;&amp;&nbsp;j&lt;=4)&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br /><span style="color: #008080; ">&nbsp;22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&nbsp;<span style="color: #0000FF; ">false</span>;<br /><span style="color: #008080; ">&nbsp;23</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;24</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;func(<span style="color: #0000FF; ">int</span>&nbsp;i,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;j)<br /><span style="color: #008080; ">&nbsp;26</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(i==0&nbsp;&amp;&amp;&nbsp;j==0)<br /><span style="color: #008080; ">&nbsp;28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">&nbsp;29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("(0,&nbsp;0)\n");<br /><span style="color: #008080; ">&nbsp;30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br /><span style="color: #008080; ">&nbsp;31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;t;<br /><span style="color: #008080; ">&nbsp;33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.x=i;<br /><span style="color: #008080; ">&nbsp;34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.y=j;<br /><span style="color: #008080; ">&nbsp;35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S.push(t);<br /><span style="color: #008080; ">&nbsp;36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func(dis[i][j].x,dis[i][j].y);&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">递归放入栈，不知道怎么倒序输出</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">&nbsp;38</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;39</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">方法二===================================================</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">void&nbsp;dfs(int&nbsp;x,int&nbsp;y)<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">{<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;pre_x=dis[x][y].x;<br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;pre_y=dis[x][y].y;<br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">如果有祖先，则搜索祖先<br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;if(pre_x!=-1&nbsp;&amp;&amp;&nbsp;pre_y!=-1)<br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(pre_x,pre_y);<br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">输出自己的地址，无论是否有祖先(队列中无祖先的只有【0】【0】点）<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf("(%d,&nbsp;%d)\n",x,y);<br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">}</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">方法三===================================================</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">void&nbsp;print(int&nbsp;i,int&nbsp;j)<br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">{<br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;if(i==0&nbsp;&amp;&amp;&nbsp;j==0)<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("(0,&nbsp;0)\n");<br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;;<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;print(map[i][j]/5,map[i][j]%5);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">先遍历祖先<br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;printf("(%d,&nbsp;%d)\n",i,j);<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">}</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">方法四===================================================</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;print(<span style="color: #0000FF; ">int</span>&nbsp;i,<span style="color: #0000FF; ">int</span>&nbsp;j)<br /><span style="color: #008080; ">&nbsp;67</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;68</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(i==0&nbsp;&amp;&amp;&nbsp;j==0)<br /><span style="color: #008080; ">&nbsp;69</span>&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">&nbsp;70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("(0,&nbsp;0)\n");<br /><span style="color: #008080; ">&nbsp;71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br /><span style="color: #008080; ">&nbsp;72</span>&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;73</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;74</span>&nbsp;&nbsp;&nbsp;&nbsp;print(dis[i][j].x,dis[i][j].y);<span style="color: #008000; ">//</span><span style="color: #008000; ">先遍历祖先,这两句话的位置很重要，先到祖先，在写自己（下一句话），第一次的错误就是两句话反了<br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">导致顺序颠倒了</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;printf("(%d,&nbsp;%d)\n",i,j);&nbsp;<br /><span style="color: #008080; ">&nbsp;77</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;78</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;79</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;BFS()<br /><span style="color: #008080; ">&nbsp;81</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;82</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue&lt;Point&gt;&nbsp;Q;<br /><span style="color: #008080; ">&nbsp;83</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;84</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;cur,m,q;<br /><span style="color: #008080; ">&nbsp;85</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur.x=0;<br /><span style="color: #008080; ">&nbsp;86</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur.y=0;<br /><span style="color: #008080; ">&nbsp;87</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark[0][0]=1;<br /><span style="color: #008080; ">&nbsp;88</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q.push(cur);<br /><span style="color: #008080; ">&nbsp;89</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[0][0].x=0;<br /><span style="color: #008080; ">&nbsp;90</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[0][0].y=0;<br /><span style="color: #008080; ">&nbsp;91</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;xt,yt;<br /><span style="color: #008080; ">&nbsp;92</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;93</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(!Q.empty())<br /><span style="color: #008080; ">&nbsp;94</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">&nbsp;95</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m=Q.front();<br /><span style="color: #008080; ">&nbsp;96</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q.pop();<br /><span style="color: #008080; ">&nbsp;97</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;98</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i=0;i&lt;4;i++)<br /><span style="color: #008080; ">&nbsp;99</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">100</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xt=m.x+dir[i][0];<br /><span style="color: #008080; ">101</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yt=m.y+dir[i][1];<br /><span style="color: #008080; ">102</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xt==4&nbsp;&amp;&amp;&nbsp;yt==4)&nbsp;<br /><span style="color: #008080; ">103</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">104</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;func(m.x,m.y);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">方法一：放入栈<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #008000; ">&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; ">dfs(m.x,m.y);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">方法二：用深搜<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #008000; ">&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; ">map[xt][yt]=m.x*5+m.y;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">方法三：&nbsp;用横竖法（自己起的名字），来记录上一次的位置</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[4][4].x=m.x;<br /><span style="color: #008080; ">108</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[4][4].y=m.y;<br /><span style="color: #008080; ">109</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(4,4);<br /><span style="color: #008080; ">110</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br /><span style="color: #008080; ">111</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">112</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(InMap(xt,yt)&nbsp;&amp;&amp;&nbsp;mark[xt][yt]==0&nbsp;&amp;&amp;&nbsp;maze[xt][yt]==0)<span style="color: #008000; ">//</span><span style="color: #008000; ">判断下面一层的结点是否符合</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">114</span>&nbsp;<br /><span style="color: #008080; ">115</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[xt][yt].x=m.x;<span style="color: #008000; ">//</span><span style="color: #008000; ">记录每上次的结点，这样才可以把整个拎起来</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[xt][yt].y=m.y;<span style="color: #008000; ">//</span><span style="color: #008000; ">用dis[][]点来记录每个节点的父节点，因为遍历过就会mark=1,所以只会有一个父节，不会被覆盖<br /></span><span style="color: #008080; ">117</span>&nbsp;<span style="color: #008000; "><br /></span><span style="color: #008080; ">118</span>&nbsp;<span style="color: #008000; ">&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; ">map[xt][yt]=m.x*5+m.y;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">记录路径的好方法！！记录前驱</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">119</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">120</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark[xt][yt]=1;<span style="color: #008000; ">//</span><span style="color: #008000; ">访问过后</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">121</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.x=xt;<br /><span style="color: #008080; ">122</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.y=yt;<br /><span style="color: #008080; ">123</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q.push(q);<br /><span style="color: #008080; ">124</span>&nbsp;<br /><span style="color: #008080; ">125</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">126</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">127</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">128</span>&nbsp;}<br /><span style="color: #008080; ">129</span>&nbsp;<br /><span style="color: #008080; ">130</span>&nbsp;<br /><span style="color: #008080; ">131</span>&nbsp;<br /><span style="color: #008080; ">132</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main()<br /><span style="color: #008080; ">133</span>&nbsp;{<br /><span style="color: #008080; ">134</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i,j;<br /><span style="color: #008080; ">135</span>&nbsp;<br /><span style="color: #008080; ">136</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freopen("in.txt","r",stdin);<br /><span style="color: #008080; ">137</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(i=0;i&lt;5;i++)<br /><span style="color: #008080; ">138</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(j=0;j&lt;5;j++)<br /><span style="color: #008080; ">139</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;maze[i][j]);<br /><span style="color: #008080; ">140</span>&nbsp;<br /><span style="color: #008080; ">141</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BFS();<br /><span style="color: #008080; ">142</span>&nbsp;<br /><span style="color: #008080; ">143</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">print(4,4);<br /></span><span style="color: #008080; ">144</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">while(!S.empty())</span><span style="color: #008000; ">//</span><span style="color: #008000; ">打印路径<br /></span><span style="color: #008080; ">145</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">{<br /></span><span style="color: #008080; ">146</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;printf("(%d,&nbsp;%d)\n",S.top().x,S.top().y);<br /></span><span style="color: #008080; ">147</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;S.pop();<br /></span><span style="color: #008080; ">148</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">}<br /></span><span style="color: #008080; ">149</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">printf("(4,&nbsp;4)\n");</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">150</span>&nbsp;<span style="color: #008000; "></span><br /><span style="color: #008080; ">151</span>&nbsp;<br /><span style="color: #008080; ">152</span>&nbsp;<br /><span style="color: #008080; ">153</span>&nbsp;<br /><span style="color: #008080; ">154</span>&nbsp;<br /><span style="color: #008080; ">155</span>&nbsp;<br /><span style="color: #008080; ">156</span>&nbsp;}</div><img src ="http://www.cppblog.com/Sai/aggbug/174907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2012-05-14 23:45 <a href="http://www.cppblog.com/Sai/archive/2012/05/14/174907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 3984  方法一【BFS+Stack 记录路径】</title><link>http://www.cppblog.com/Sai/archive/2012/05/14/174906.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Mon, 14 May 2012 15:02:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2012/05/14/174906.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/174906.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2012/05/14/174906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/174906.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/174906.html</trackback:ping><description><![CDATA[<div>刚学搜索，总是不开窍，看了介绍，自己磨了两小时才写出来。后面会有DFS和改进后的方法。想通过这道水题，把搜索入了门先。<br />
蓝桥大赛还有几天，再看看，自己水死了。<br />
自己的代码：<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;1</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">#include</span><span style="background-color: #eeeeee; font-size: 13px; ">&lt;</span><span style="background-color: #eeeeee; font-size: 13px; ">iostream</span><span style="background-color: #eeeeee; font-size: 13px; ">&gt;</span></div>
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;#include&lt;queue&gt;<br />
<span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;#include&lt;stack&gt;<br />
<span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br />
<span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">===================================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span>&nbsp;maze[5][5];<br />
<span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;mark[5][5];<br />
<span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;Point&nbsp;<br />
<span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;{<br />
<span style="color: #008080; ">&nbsp;10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,y;<br />
<span style="color: #008080; ">&nbsp;11</span>&nbsp;};<br />
<span style="color: #008080; ">&nbsp;12</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;dir[4][2]={0,1,0,-1,1,0,-1,0};<br />
<span style="color: #008080; ">&nbsp;14</span>&nbsp;Point&nbsp;dis[5][5];<br />
<span style="color: #008080; ">&nbsp;15</span>&nbsp;stack&lt;Point&gt;&nbsp;S;<br />
<span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;map[5][5];<br />
<span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">=====================================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #008000; "></span><br />
<span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;InMap(<span style="color: #0000FF; ">int</span>&nbsp;i,<span style="color: #0000FF; ">int</span>&nbsp;j)<br />
<span style="color: #008080; ">&nbsp;20</span>&nbsp;{<br />
<span style="color: #008080; ">&nbsp;21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(i&gt;=0&amp;&amp;&nbsp;i&lt;=4&nbsp;&amp;&amp;&nbsp;j&gt;=0&nbsp;&amp;&amp;&nbsp;j&lt;=4)&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />
<span style="color: #008080; ">&nbsp;22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&nbsp;<span style="color: #0000FF; ">false</span>;<br />
<span style="color: #008080; ">&nbsp;23</span>&nbsp;}<br />
<span style="color: #008080; ">&nbsp;24</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;func(<span style="color: #0000FF; ">int</span>&nbsp;i,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;j)<br />
<span style="color: #008080; ">&nbsp;26</span>&nbsp;{<br />
<span style="color: #008080; ">&nbsp;27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(i==0&nbsp;&amp;&amp;&nbsp;j==0)<br />
<span style="color: #008080; ">&nbsp;28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">&nbsp;29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("(0,&nbsp;0)\n");<br />
<span style="color: #008080; ">&nbsp;30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br />
<span style="color: #008080; ">&nbsp;31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">&nbsp;32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;t;<br />
<span style="color: #008080; ">&nbsp;33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.x=i;<br />
<span style="color: #008080; ">&nbsp;34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.y=j;<br />
<span style="color: #008080; ">&nbsp;35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S.push(t);<br />
<span style="color: #008080; ">&nbsp;36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func(dis[i][j].x,dis[i][j].y);&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">递归放入栈，不知道怎么倒序输出</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #008000; "></span><br />
<span style="color: #008080; ">&nbsp;38</span>&nbsp;}<br />
<span style="color: #008080; ">&nbsp;39</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;BFS()<br />
<span style="color: #008080; ">&nbsp;41</span>&nbsp;{<br />
<span style="color: #008080; ">&nbsp;42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue&lt;Point&gt;&nbsp;Q;<br />
<span style="color: #008080; ">&nbsp;43</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;cur,m,q;<br />
<span style="color: #008080; ">&nbsp;45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur.x=0;<br />
<span style="color: #008080; ">&nbsp;46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur.y=0;<br />
<span style="color: #008080; ">&nbsp;47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark[0][0]=1;<br />
<span style="color: #008080; ">&nbsp;48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q.push(cur);<br />
<span style="color: #008080; ">&nbsp;49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[0][0].x=0;<br />
<span style="color: #008080; ">&nbsp;50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[0][0].y=0;<br />
<span style="color: #008080; ">&nbsp;51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;xt,yt;<br />
<span style="color: #008080; ">&nbsp;52</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;53</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(!Q.empty())<br />
<span style="color: #008080; ">&nbsp;54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">&nbsp;55</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m=Q.front();<br />
<span style="color: #008080; ">&nbsp;56</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q.pop();<br />
<span style="color: #008080; ">&nbsp;57</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i=0;i&lt;4;i++)<br />
<span style="color: #008080; ">&nbsp;59</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">&nbsp;60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xt=m.x+dir[i][0];<br />
<span style="color: #008080; ">&nbsp;61</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yt=m.y+dir[i][1];<br />
<span style="color: #008080; ">&nbsp;62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xt==4&nbsp;&amp;&amp;&nbsp;yt==4)&nbsp;<br />
<span style="color: #008080; ">&nbsp;63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">&nbsp;64</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func(m.x,m.y);<span style="color: #008000; ">//</span><span style="color: #008000; ">放入栈</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br />
<span style="color: #008080; ">&nbsp;66</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">&nbsp;67</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(InMap(xt,yt)&nbsp;&amp;&amp;&nbsp;mark[xt][yt]==0&nbsp;&amp;&amp;&nbsp;maze[xt][yt]==0)<span style="color: #008000; ">//</span><span style="color: #008000; ">判断下面一层的结点是否符合</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">&nbsp;69</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[xt][yt].x=m.x;<span style="color: #008000; ">//</span><span style="color: #008000; ">记录每上次的结点，这样才可以把整个拎起来</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis[xt][yt].y=m.y;<span style="color: #008000; ">//</span><span style="color: #008000; ">用dis[][]点来记录每个节点的父节点，因为遍历过就会mark=1,所以只会有一个父节，不会被覆盖</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark[xt][yt]=1;<span style="color: #008000; ">//</span><span style="color: #008000; ">访问过后</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.x=xt;<br />
<span style="color: #008080; ">&nbsp;74</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.y=yt;<br />
<span style="color: #008080; ">&nbsp;75</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q.push(q);<br />
<span style="color: #008080; ">&nbsp;76</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;77</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">&nbsp;78</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">&nbsp;79</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">&nbsp;80</span>&nbsp;}<br />
<span style="color: #008080; ">&nbsp;81</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main()<br />
<span style="color: #008080; ">&nbsp;83</span>&nbsp;{<br />
<span style="color: #008080; ">&nbsp;84</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i,j;<br />
<span style="color: #008080; ">&nbsp;85</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;86</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">freopen("in.txt","r",stdin);</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(i=0;i&lt;5;i++)<br />
<span style="color: #008080; ">&nbsp;88</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(j=0;j&lt;5;j++)<br />
<span style="color: #008080; ">&nbsp;89</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;maze[i][j]);<br />
<span style="color: #008080; ">&nbsp;90</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;91</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BFS();<br />
<span style="color: #008080; ">&nbsp;92</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;93</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(!S.empty())<span style="color: #008000; ">//</span><span style="color: #008000; ">打印路径</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">&nbsp;95</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("(%d,&nbsp;%d)\n",S.top().x,S.top().y);<br />
<span style="color: #008080; ">&nbsp;96</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S.pop();<br />
<span style="color: #008080; ">&nbsp;97</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">&nbsp;98</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("(4,&nbsp;4)\n");<br />
<span style="color: #008080; ">&nbsp;99</span>&nbsp;<br />
<span style="color: #008080; ">100</span>&nbsp;<br />
<span style="color: #008080; ">101</span>&nbsp;<br />
<span style="color: #008080; ">102</span>&nbsp;<br />
<span style="color: #008080; ">103</span>&nbsp;<br />
<span style="color: #008080; ">104</span>&nbsp;<br />
<span style="color: #008080; ">105</span>&nbsp;}</div><img src ="http://www.cppblog.com/Sai/aggbug/174906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2012-05-14 23:02 <a href="http://www.cppblog.com/Sai/archive/2012/05/14/174906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【算法导论】动态规划实现</title><link>http://www.cppblog.com/Sai/archive/2012/05/06/173842.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Sun, 06 May 2012 13:15:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2012/05/06/173842.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/173842.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2012/05/06/173842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/173842.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/173842.html</trackback:ping><description><![CDATA[对于 line[6][2]的记录机制还有疑问，等下细细看来，再补上解答<span style="font-size: 13px; color: #008080; ">&nbsp;1</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; ">#include</span><span style="background-color: #eeeeee; font-size: 13px; ">&lt;</span><span style="background-color: #eeeeee; font-size: 13px; ">iostream</span><span style="background-color: #eeeeee; font-size: 13px; ">&gt;</span><br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; color: black; background-color: #0099cc; "><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">==========================================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span>&nbsp;a[2][100];<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;f[2][100];<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;t[2][100];<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;line[2][100];<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;e[2];<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x[2];<br />
<span style="color: #008080; ">10</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;lend,fend;<br />
<span style="color: #008080; ">11</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">==========================================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">void</span>&nbsp;&nbsp;FastWay(<span style="color: #0000FF; ">int</span>&nbsp;a[2][6],<span style="color: #0000FF; ">int</span>&nbsp;t[2][5],<span style="color: #0000FF; ">int</span>&nbsp;e[2],<span style="color: #0000FF; ">int</span>&nbsp;x[2],<span style="color: #0000FF; ">int</span>&nbsp;n,<span style="color: #0000FF; ">int</span>&nbsp;&amp;fend,<span style="color: #0000FF; ">int</span>&nbsp;&amp;lend)<br />
<span style="color: #008080; ">13</span>&nbsp;{<br />
<span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[0][0]&nbsp;=&nbsp;e[0]&nbsp;+&nbsp;a[0][0];<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[1][0]&nbsp;=&nbsp;e[1]&nbsp;+&nbsp;a[1][0];<br />
<span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;a[0][1]&nbsp;&lt;&lt;&nbsp;endl;<br />
<span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;a[1][1]&nbsp;&lt;&lt;&nbsp;endl;<br />
<span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;j&nbsp;=&nbsp;1;&nbsp;j&nbsp;&lt;&nbsp;n;&nbsp;j++)<br />
<span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(f[0][j-1]&nbsp;+&nbsp;a[0][j]&nbsp;&lt;=&nbsp;f[1][j-1]&nbsp;+&nbsp;t[1][j-1]&nbsp;+&nbsp;a[0][j])<br />
<span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[0][j]&nbsp;=&nbsp;f[0][j-1]&nbsp;+&nbsp;a[0][j];<br />
<span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line[0][j]&nbsp;=&nbsp;0;<br />
<span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />
<span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[0][j]&nbsp;=&nbsp;f[1][j-1]&nbsp;+&nbsp;t[1][j-1]&nbsp;+&nbsp;a[0][j];<br />
<span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line[0][j]&nbsp;=&nbsp;1;<br />
<span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(f[1][j-1]&nbsp;+&nbsp;a[1][j]&nbsp;&lt;=&nbsp;f[0][j-1]&nbsp;+&nbsp;t[0][j-1]&nbsp;+&nbsp;a[1][j])<br />
<span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[1][j]&nbsp;=&nbsp;f[1][j-1]&nbsp;+&nbsp;a[1][j];<br />
<span style="color: #008080; ">33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line[1][j]&nbsp;=&nbsp;1;<br />
<span style="color: #008080; ">34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />
<span style="color: #008080; ">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[1][j]&nbsp;=&nbsp;f[0][j-1]&nbsp;+&nbsp;t[0][j-1]&nbsp;+&nbsp;a[1][j];<br />
<span style="color: #008080; ">38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line[1][j]&nbsp;=&nbsp;0;<br />
<span style="color: #008080; ">39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(f[0][n-1]&nbsp;+&nbsp;x[0]&nbsp;&lt;=&nbsp;f[1][n-1]&nbsp;+&nbsp;x[1])<br />
<span style="color: #008080; ">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fend&nbsp;=&nbsp;f[0][n-1]&nbsp;+&nbsp;x[0];<br />
<span style="color: #008080; ">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lend&nbsp;=&nbsp;0;<br />
<span style="color: #008080; ">45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />
<span style="color: #008080; ">47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fend&nbsp;=&nbsp;f[1][n-1]&nbsp;+&nbsp;x[1];<br />
<span style="color: #008080; ">49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lend&nbsp;=&nbsp;1;<br />
<span style="color: #008080; ">50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">51</span>&nbsp;<br />
<span style="color: #008080; ">52</span>&nbsp;}<br />
<span style="color: #008080; ">53</span>&nbsp;<br />
<span style="color: #008080; ">54</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">===============================================================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">55</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">void</span>&nbsp;PrintStations(<span style="color: #0000FF; ">int</span>&nbsp;line[2][6],<span style="color: #0000FF; ">int</span>&nbsp;lend,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;n)<br />
<span style="color: #008080; ">56</span>&nbsp;{<br />
<span style="color: #008080; ">57</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i=lend;<br />
<span style="color: #008080; ">58</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Line&nbsp;"&lt;&lt;i&lt;&lt;"&nbsp;Station&nbsp;"&lt;&lt;n&lt;&lt;endl;&nbsp;<br />
<span style="color: #008080; ">59</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;j=n-1;j&gt;=2;j--)<br />
<span style="color: #008080; ">60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">61</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=line[i][j];<span style="color: #008000; ">//</span><span style="color: #008000; ">?????????????????/</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">62</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Line&nbsp;"&lt;&lt;i&lt;&lt;"&nbsp;Station&nbsp;"&lt;&lt;j-1&lt;&lt;endl;&nbsp;<br />
<span style="color: #008080; ">63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">64</span>&nbsp;}<br />
<span style="color: #008080; ">65</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">===============================================================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">66</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span>&nbsp;main()<br />
<span style="color: #008080; ">67</span>&nbsp;{<br />
<span style="color: #008080; ">68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;n=6;<br />
<span style="color: #008080; ">69</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;e[3]={2,4};<br />
<span style="color: #008080; ">70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x[3]={3,2};<br />
<span style="color: #008080; ">71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;a[2][6]={7,9,3,4,8,4,8,5,6,4,5,7};<br />
<span style="color: #008080; ">72</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;t[2][5]={2,3,1,3,4,2,1,2,2,1};<br />
<span style="color: #008080; ">73</span>&nbsp;<br />
<span style="color: #008080; ">74</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;Line[2][6];<br />
<span style="color: #008080; ">75</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;LastFlag;<br />
<span style="color: #008080; ">76</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;fend;<br />
<span style="color: #008080; ">77</span>&nbsp;<br />
<span style="color: #008080; ">78</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FastWay(a,&nbsp;t,&nbsp;e,&nbsp;x,&nbsp;n,fend,LastFlag);<br />
<span style="color: #008080; ">79</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("fast&nbsp;=&nbsp;%d;\n",&nbsp;fend);<br />
<span style="color: #008080; ">80</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">81</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStations(Line,&nbsp;LastFlag,&nbsp;n);<br />
<span style="color: #008080; ">82</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />
<span style="color: #008080; ">83</span>&nbsp;<br />
<span style="color: #008080; ">84</span>&nbsp;}</div><img src ="http://www.cppblog.com/Sai/aggbug/173842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2012-05-06 21:15 <a href="http://www.cppblog.com/Sai/archive/2012/05/06/173842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1050 二维最大子矩阵</title><link>http://www.cppblog.com/Sai/archive/2011/11/29/161188.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Tue, 29 Nov 2011 12:42:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2011/11/29/161188.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/161188.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2011/11/29/161188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/161188.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/161188.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<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: #008000; ">//</span><span style="color: #008000; ">解法一：自己的解法：先求每一行中从i到j的和存储在sum[r]中r从1到n,记录每一列从i到j的和。然后用<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;一维数组的方法求出。47MS。</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span><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;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: #008000; ">//</span><span style="color: #008000; ">=============================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;N&nbsp;102</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p[N][N];<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;b[N][N];<br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;M&nbsp;128;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;sum[N];<br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">==============================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;Maxtri(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;start,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;end,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">a)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">一维数组求最大子段和</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;max</span><span style="color: #000000; ">=-</span><span style="color: #000000; ">M;<br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&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; ">start;i</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">end;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">17</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; ">(s</span><span style="color: #000000; ">+</span><span style="color: #000000; ">a[i]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">s</span><span style="color: #000000; ">+</span><span style="color: #000000; ">a[i];<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;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<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;s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</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;}<br />
</span><span style="color: #008080; ">25</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; ">(s</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">max)max</span><span style="color: #000000; ">=</span><span style="color: #000000; ">s;<br />
</span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;max;<br />
</span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">}<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; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />
</span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br />
</span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;m</span><span style="color: #000000; ">=-</span><span style="color: #000000; ">M;<br />
</span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n;<br />
</span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />
</span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />
</span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #000000; ">&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; ">p[i][j];<br />
</span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />
</span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />
</span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&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;r</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;r</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">r)<br />
</span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum[r]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">勿忘，每次都初始化。。。</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i;k</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">j;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">k)<br />
</span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum[r]</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">p[r][k];<br />
</span><span style="color: #008080; ">52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(Maxtri(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,n,sum)</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">m)m</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Maxtri(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,n,sum);<br />
</span><span style="color: #008080; ">55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">m</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />
</span><span style="color: #008080; ">58</span>&nbsp;<span style="color: #000000; ">}<br />
</span><span style="color: #008080; ">59</span>&nbsp;<span style="color: #000000; "></span></div><img src ="http://www.cppblog.com/Sai/aggbug/161188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2011-11-29 20:42 <a href="http://www.cppblog.com/Sai/archive/2011/11/29/161188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 2479 最大子段和 问题</title><link>http://www.cppblog.com/Sai/archive/2011/11/28/161090.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Mon, 28 Nov 2011 14:37:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2011/11/28/161090.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/161090.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2011/11/28/161090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/161090.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/161090.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<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: #008000; ">/*</span><span style="color: #008000; ">最大子序和问题，从左到右和从右到左用了不同的方法<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000; ">求从右到左时我用了<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i&lt;n;++i)<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(b+p[i]&gt;0)<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b=b+p[i];<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
</span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b=0;<br />
</span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(b&gt;max)max=b;<br />
</span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;max&lt;&lt;endl;<br />
</span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #008000; ">这个方法。而从右到左求时，用这方法时<br />
</span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #008000; ">如下<br />
</span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum2[n-1]=0;<br />
</span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=n-1;i&gt;=1;--i)<br />
</span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sum2[i+1]+p[i]&gt;0)<br />
</span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum2[i]=sum2[i+1]+p[i];<br />
</span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
</span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum2[i]=0;<br />
</span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sum2[i]&gt;max)max=sum2[i];<br />
</span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一直W。。TAT.不知为何.所以换了个方法如下。<br />
</span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #008000; ">主要思路：两个不相交字串，一个从左到右求出sum1[i]为右边前i个数中最大字串（未必从第一个开始，也未必最后一个结束，的任意子串），<br />
</span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #008000; ">而从这时的i到n中求出最大子串值和其相加时，未必为最大和。所以先保证从右到左为最大，求出i，再从i到1求出。<br />
</span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #008000; ">再从和中挑出最大的，若两个都挑出最大的，用函数的话会超时很惨的。</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;35</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;36</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;37</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;38</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">=====================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;M&nbsp;50001</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k;<br />
</span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p[M],sum1[M],sum2[M];<br />
</span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">=====================================================</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />
</span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; ">{<br />
</span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br />
</span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;max</span><span style="color: #000000; ">=-</span><span style="color: #000000; ">M;<br />
</span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;freopen(&nbsp;"in.txt",&nbsp;"r",&nbsp;stdin);<br />
</span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">freopen(&nbsp;"out.txt",&nbsp;"w+",&nbsp;stdout);&nbsp;</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&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; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">k);<br />
</span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br />
</span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&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; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n);<br />
</span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;max</span><span style="color: #000000; ">=-</span><span style="color: #000000; ">M;<br />
</span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;m</span><span style="color: #000000; ">=-</span><span style="color: #000000; ">M;<br />
</span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&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; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">p[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]);<br />
</span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum1[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];<br />
</span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; ">&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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />
</span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">p[i]);<br />
</span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(sum1[i</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; ">p[i]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum1[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum1[i</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; ">p[i];<br />
</span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum1[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />
</span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum2[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; ">p[n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />
</span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&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; ">n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">i)<br />
</span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(sum2[i]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />
</span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum2[i</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; ">sum2[i]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">p[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />
</span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum2[i</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; ">p[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />
</span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(sum2[i]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">max)max</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum2[i];<br />
</span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(sum1[i</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; ">max</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">m)<br />
</span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum1[i</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; ">max;<br />
</span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&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; ">,m);<br />
</span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">}<br />
</span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #000000; "></span></div><img src ="http://www.cppblog.com/Sai/aggbug/161090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2011-11-28 22:37 <a href="http://www.cppblog.com/Sai/archive/2011/11/28/161090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1458 最长公共子列</title><link>http://www.cppblog.com/Sai/archive/2011/11/27/161034.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Sun, 27 Nov 2011 08:34:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2011/11/27/161034.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/161034.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2011/11/27/161034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/161034.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/161034.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #666666; "><!--<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: #0000FF; ">string</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; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;str1,str2;<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;c[</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">][</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">];</span><span style="color: #008000; ">//</span><span style="color: #008000; ">c[i][j]表示到x中的第i个和y中的第j个的已有最长字串的长度</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;max(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;b)<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;(a</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">b</span><span style="color: #000000; ">?</span><span style="color: #000000; ">a:b);<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; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">str1</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">str2)<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">int&nbsp;counter=0;二货！！！！！！！！！！！</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; "></span><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; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;s1</span><span style="color: #000000; ">=</span><span style="color: #000000; ">str1.size();<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;s2</span><span style="color: #000000; ">=</span><span style="color: #000000; ">str2.size();<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: #008000; ">//</span><span style="color: #008000; ">for(int&nbsp;i=0;i&lt;s1;++i)&nbsp;c[i][0]=0;二货！！字符串时str[0]也是有用的！！<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">for(int&nbsp;j=0;j&lt;s2;++j)&nbsp;c[0][j]=0;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&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; ">s1;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<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;</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; ">1</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">s2;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<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;{<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&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; ">(str1[i</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; ">str2[j</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">])</span><span style="color: #008000; ">//</span><span style="color: #008000; ">处理字符串时又不能从一开始的时候，可以在判断的时候迂回一下</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">c[i</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; ">]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">通过上一个表示自己，i和j在c[i][j]表示个数时都为加一以后所负责表示。</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; background-color: purple; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&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; "><br /></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">max(c[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][j],c[i][j</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]);<br /></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">c[s1][s2]</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">通过最后递推结果来说明。</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #000000; "></span></div><img src ="http://www.cppblog.com/Sai/aggbug/161034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2011-11-27 16:34 <a href="http://www.cppblog.com/Sai/archive/2011/11/27/161034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 3070 这个为矩阵相乘的基础题。</title><link>http://www.cppblog.com/Sai/archive/2011/11/27/161028.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Sun, 27 Nov 2011 03:54:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2011/11/27/161028.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/161028.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2011/11/27/161028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/161028.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/161028.html</trackback:ping><description><![CDATA[建议做矩阵相乘时先做3070,后面在开始做3233,3623,2440.3623和2440我还没开始做，今天下午就要自己做出来！！！！还有。。。海贼王更新了！！！！<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; color: green; background-color: orange; "><!--<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; "></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;3</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">===================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k;<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Point&nbsp;<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">][</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;init()<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[</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; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;a[</span><span style="color: #000000; ">0</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 /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][</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; ">;a[</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; ">0</span><span style="color: #000000; ">;<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; ">};<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">Point&nbsp;mul(Point&nbsp;p,Point&nbsp;q)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">矩阵相乘</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j;<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;c;<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(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; ">2</span><span style="color: #000000; ">;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&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;</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; ">0</span><span style="color: #000000; ">;j</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;</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;{<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;</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 /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&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;k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;k</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">k)<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">(p.a[i][k]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">q.a[k][j])</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10000</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;if(sum&gt;10000)<br /></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum-=10000;<br /></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #008000; ">&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: #000000; "><br /></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.a[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sum</span><span style="color: #000000; ">%</span><span style="color: #000000; ">10000</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;c;<br /></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #000000; ">Point&nbsp;maxtrimul(Point&nbsp;s,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k)<br /></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;ans;<br /></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">s;<br /></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;s;<br /></span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">maxtrimul(s,k</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul(ans,ans);<br /></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul(s,ans);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">切记！！！！</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br /></span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">52</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">53</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">54</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; ">55</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;s;<br /></span><span style="color: #008080; ">57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;s.init();<br /></span><span style="color: #008080; ">58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;c;<br /></span><span style="color: #008080; ">59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">k</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">k</span><span style="color: #000000; ">!=-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">61</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; ">(k</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">63</span>&nbsp;<span style="color: #000000; ">&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; ">0</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">66</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; ">(k</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">68</span>&nbsp;<span style="color: #000000; ">&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; ">1</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c</span><span style="color: #000000; ">=</span><span style="color: #000000; ">maxtrimul(s,k);<br /></span><span style="color: #008080; ">72</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; ">(c.a[</span><span style="color: #000000; ">0</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; ">10000</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">74</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">76</span>&nbsp;<span style="color: green; background-color: purple; ">}</span></div><img src ="http://www.cppblog.com/Sai/aggbug/161028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2011-11-27 11:54 <a href="http://www.cppblog.com/Sai/archive/2011/11/27/161028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 3233 快速幂和二分。。。基本上是别人的代码，自己改动一些，不过收获很大。</title><link>http://www.cppblog.com/Sai/archive/2011/11/27/161024.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Sun, 27 Nov 2011 02:58:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2011/11/27/161024.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/161024.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2011/11/27/161024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/161024.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/161024.html</trackback:ping><description><![CDATA[借鉴<a href="http://www.cnblogs.com/ACShiryu/archive/2011/08/09/poj3233.html">http://www.cnblogs.com/ACShiryu/archive/2011/08/09/poj3233.html<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"><!--<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; ">&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;这道题目借鉴他人的思路和代码，很有收获<br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;先看下面这个快速幂求余的运算<br /></span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000; ">递归用二分法，每个过程都求余。<br /></span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000; ">long&nbsp;exp_mod(long&nbsp;a,long&nbsp;n,long&nbsp;b)<br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; ">{<br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;t;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;if(n==0)&nbsp;return&nbsp;1%b;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;if(n==1)&nbsp;return&nbsp;a%b;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;t=exp_mod(a,n/2,b);<br /></span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;t=t*t%b;<br /></span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;if((n&amp;1)==1)&nbsp;t=t*a%b;<br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;t;<br /></span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #008000; ">}<br /></span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #008000; ">本题用了两次二分的思想，一次用于求A^K,第二次用于求&nbsp;(1+A^(k/2))*(A&nbsp;+&nbsp;A^2&nbsp;+&nbsp;A^3&nbsp;+&nbsp;&#8230;&nbsp;+&nbsp;A^(k/2))<br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;18</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;19</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;20</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;21</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">=======================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,m,k;<br /></span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Point</span><span style="color: #008000; ">//</span><span style="color: #008000; ">定义结构体更加方便,用数组时结构体有大作用的</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[</span><span style="color: #000000; ">32</span><span style="color: #000000; ">][</span><span style="color: #000000; ">32</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;init()<br /></span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #000000; ">&nbsp;&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; ">&nbsp;29</span>&nbsp;<span style="color: #000000; ">&nbsp;&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; ">32</span><span style="color: #000000; ">;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #000000; ">};<br /></span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">=======================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">Point&nbsp;mul(Point&nbsp;x,Point&nbsp;y)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">乘法运算</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;z;<br /></span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #000000; ">&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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&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;k</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;k</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">k)<br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">((x.a[i][k]</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y.a[k][j])</span><span style="color: #000000; ">%</span><span style="color: #000000; ">m);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">每次都求余</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z.a[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(sum</span><span style="color: #000000; ">%</span><span style="color: #000000; ">m);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">这时也要求余。。。。。。</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;z;<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; ">Point&nbsp;add(Point&nbsp;p,Point&nbsp;q)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">矩阵加法运算</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;c;<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.a[i][j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">((p.a[i][j]</span><span style="color: #000000; ">+</span><span style="color: #000000; ">q.a[i][j])</span><span style="color: #000000; ">%</span><span style="color: #000000; ">m);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">记得求余</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;c;<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;display(Point&nbsp;p)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">打印函数</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,j;<br /></span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #000000; ">&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; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(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</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; ">j)<br /></span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&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; ">p.a[i][j]</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; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">注意格式&#8220;&nbsp;&#8221;问题</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;76</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; ">(j</span><span style="color: #000000; ">==</span><span style="color: #000000; ">n)cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">p.a[i][j]</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">Point&nbsp;maxtrimul(Point&nbsp;s,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">用递归定义实现快速幂的乘法</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;ans;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">用来存放结果的</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans.init();<br /></span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;s;<br /></span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">maxtrimul(s,k</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">每次二分</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul(ans,ans);<br /></span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">&amp;</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: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul(s,ans);<br /></span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br /></span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">Point&nbsp;maxtrisum(Point&nbsp;s,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k)<br /></span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">==</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;s;<br /></span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;ans;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">用来保存答案</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans.init();<br /></span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">add(ans,maxtrimul(s,k</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">));<br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">mul(ans,maxtrisum(s,k</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">));<br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)</span><span style="color: #008000; ">//</span><span style="color: #008000; ">奇数时</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans</span><span style="color: #000000; ">=</span><span style="color: #000000; ">add(ans,maxtrimul(s,k));<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">111</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">k</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">m;<br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;s;<br /></span><span style="color: #008080; ">115</span>&nbsp;<span style="color: #000000; ">&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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">117</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</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;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br /></span><span style="color: #008080; ">118</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">119</span>&nbsp;<span style="color: #000000; ">&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; ">s.a[i][j];<br /></span><span style="color: #008080; ">120</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">121</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">122</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">maxtrisum(s,k);<br /></span><span style="color: #008080; ">123</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;display(s);<br /></span><span style="color: #008080; ">124</span>&nbsp;<span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">125</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">126</span>&nbsp;<span style="color: #000000; "></span></div></a><img src ="http://www.cppblog.com/Sai/aggbug/161024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2011-11-27 10:58 <a href="http://www.cppblog.com/Sai/archive/2011/11/27/161024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1828  </title><link>http://www.cppblog.com/Sai/archive/2011/11/24/160889.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Thu, 24 Nov 2011 03:39:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2011/11/24/160889.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/160889.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2011/11/24/160889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/160889.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/160889.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<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; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">======================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Point<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y;<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;flag;<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">};<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Point&nbsp;p[</span><span style="color: #000000; ">50050</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">======================================================<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">原来自己用了两方面即想x相同时比y,y相同时比x，两个排序，两个比较，超时。没有下面方法好，只用了一半。。。要好好加油了~TVT.<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">按照x从小到大排序，当x相等时按照y从大到小排序,从左到右，见到最高的就加一,counter初始值为1<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">即x最大时，y中也是最大值的p[n-1].y一定是，然后就像爬楼梯一样比较</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;cmp1(&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">a&nbsp;,&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">b&nbsp;)<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Point&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">c&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Point&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)a;<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Point&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Point&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)b;<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(c</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">x&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;d</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">x)&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;c</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">x&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;d</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">x;<br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;c</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">y&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;d</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">y;<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">==============================================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br /></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n)</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">EOF</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">n)<br /></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;counter</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(p,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(p));<br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&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; ">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; ">i)<br /></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&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; ">p[i].x</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">p[i].y;<br /></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(p,n,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(p[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]),cmp1);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">按照x从小到大排序，当x相等时按照y从大到小排序<br /></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">从左到右，见到最高的就加一</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #008000; "></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;max</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p[n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].y;<br /></span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #000000; ">&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; ">n</span><span style="color: #000000; ">-</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(p[i].y</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">max)<br /></span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="color: #000000; ">=</span><span style="color: #000000; ">p[i].y;<br /></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #000000; ">&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; ">,counter);<br /></span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #000000; ">}</span></div><img src ="http://www.cppblog.com/Sai/aggbug/160889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2011-11-24 11:39 <a href="http://www.cppblog.com/Sai/archive/2011/11/24/160889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1723 </title><link>http://www.cppblog.com/Sai/archive/2011/11/22/160738.html</link><dc:creator>四也</dc:creator><author>四也</author><pubDate>Tue, 22 Nov 2011 13:24:00 GMT</pubDate><guid>http://www.cppblog.com/Sai/archive/2011/11/22/160738.html</guid><wfw:comment>http://www.cppblog.com/Sai/comments/160738.html</wfw:comment><comments>http://www.cppblog.com/Sai/archive/2011/11/22/160738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sai/comments/commentRss/160738.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sai/services/trackbacks/160738.html</trackback:ping><description><![CDATA[我真是太菜了。。。看了N个别人的解答，就是不懂。。直到这个出现，我终于懂了一点。。。。<span class="Apple-style-span" style="color: #494949; font-family: simsun; font-size: 15px; background-color: #f6f6f6; "><div>首先考虑纵坐标：</div><div>对纵坐标做一次排序，那么，只要最终选择的纵坐标不小于最小的，且不大于最大的，那么对于一头一尾两个点，效果都是相同的；依此类推，所以，选择的纵坐标就是整个纵坐标序列的中位数了，简单吧？</div><div>再来考虑横坐标：</div><div>还是进行一次升序排列，很显然，这就是最终的顺序了（否则肯定会浪费移动次数），即：</div><div>X1 -&gt; X0</div><div>X2 -&gt; X0 + 1</div><div>...</div><div>Xn -&gt; X0 + n - 1</div><div>也就是：</div><div>X1 -&gt; X0</div><div>X2 - 1 -&gt; X0</div><div>...</div></span><br /><span class="Apple-style-span" style="color: #494949; font-family: simsun; font-size: 15px; background-color: #f6f6f6; "><div>Xn - (n - 1) -&gt; X0 &nbsp;//<br /><div>来自<a href="http://blog.sina.com.cn/s/blog_67ac571c0100itfv.html">http://blog.sina.com.cn/s/blog_67ac571c0100itfv.html<br /></a>下面是我自己的的代码了TVT~<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"><!--<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; ">cmath</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: #008000; ">//</span><span style="color: #008000; ">========================================</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x[</span><span style="color: #000000; ">10010</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y[</span><span style="color: #000000; ">10010</span><span style="color: #000000; ">];<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;main()<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n;<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">n;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;counts</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&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; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">x[i]</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">y[i];<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sort(y,y</span><span style="color: #000000; ">+</span><span style="color: #000000; ">n);<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sort(x,x</span><span style="color: #000000; ">+</span><span style="color: #000000; ">n);<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;yz</span><span style="color: #000000; ">=</span><span style="color: #000000; ">y[n</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&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; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">i;<br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sort(x,x</span><span style="color: #000000; ">+</span><span style="color: #000000; ">n);<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;xz</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x[n</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&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; ">n;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<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; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counts</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">(abs(y[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">yz)</span><span style="color: #000000; ">+</span><span style="color: #000000; ">abs(x[i]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">xz));<br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">counts</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">}</span></div><br /><br /><br /><br /></div></div></span><img src ="http://www.cppblog.com/Sai/aggbug/160738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sai/" target="_blank">四也</a> 2011-11-22 21:24 <a href="http://www.cppblog.com/Sai/archive/2011/11/22/160738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>