﻿<?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++博客-Program The Future-随笔分类-Algorithm</title><link>http://www.cppblog.com/issayandfaye/category/12280.html</link><description>自省、自信</description><language>zh-cn</language><lastBuildDate>Mon, 23 Nov 2009 07:55:36 GMT</lastBuildDate><pubDate>Mon, 23 Nov 2009 07:55:36 GMT</pubDate><ttl>60</ttl><item><title>螺旋矩阵的算法</title><link>http://www.cppblog.com/issayandfaye/archive/2009/11/15/100976.html</link><dc:creator>iSsay</dc:creator><author>iSsay</author><pubDate>Sun, 15 Nov 2009 08:02:00 GMT</pubDate><guid>http://www.cppblog.com/issayandfaye/archive/2009/11/15/100976.html</guid><wfw:comment>http://www.cppblog.com/issayandfaye/comments/100976.html</wfw:comment><comments>http://www.cppblog.com/issayandfaye/archive/2009/11/15/100976.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/issayandfaye/comments/commentRss/100976.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/issayandfaye/services/trackbacks/100976.html</trackback:ping><description><![CDATA[<p>1 &nbsp; 2 &nbsp; 3 &nbsp; &nbsp; 4 <br>12 13 &nbsp;14&nbsp;&nbsp; 5 <br>11 16 &nbsp;15&nbsp;&nbsp; 6 <br>10 &nbsp;9 &nbsp; &nbsp;8 &nbsp; &nbsp;7&nbsp;&nbsp;</p>
<p>这种情况用模拟比较好推出，以1为坐标原点，一次递增，遇到边界则转向</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><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><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAX_SIZE&nbsp;100</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_76_85_Open_Image onclick="this.style.display='none'; Codehighlighter1_76_85_Open_Text.style.display='none'; Codehighlighter1_76_85_Closed_Image.style.display='inline'; Codehighlighter1_76_85_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_76_85_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_76_85_Closed_Text.style.display='none'; Codehighlighter1_76_85_Open_Image.style.display='inline'; Codehighlighter1_76_85_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;intx[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_76_85_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_76_85_Open_Text><span style="COLOR: #000000">{</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">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_106_115_Open_Image onclick="this.style.display='none'; Codehighlighter1_106_115_Open_Text.style.display='none'; Codehighlighter1_106_115_Closed_Image.style.display='inline'; Codehighlighter1_106_115_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_106_115_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_106_115_Closed_Text.style.display='none'; Codehighlighter1_106_115_Open_Image.style.display='inline'; Codehighlighter1_106_115_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;inty[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_106_115_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_106_115_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;<br><img id=Codehighlighter1_130_731_Open_Image onclick="this.style.display='none'; Codehighlighter1_130_731_Open_Text.style.display='none'; Codehighlighter1_130_731_Closed_Image.style.display='inline'; Codehighlighter1_130_731_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_130_731_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_731_Closed_Text.style.display='none'; Codehighlighter1_130_731_Open_Image.style.display='inline'; Codehighlighter1_130_731_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_130_731_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_130_731_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;dir,i,j,n,data,x,y,nextx,nexty;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;arr[MAX_SIZE][MAX_SIZE];<br><img id=Codehighlighter1_207_219_Open_Image onclick="this.style.display='none'; Codehighlighter1_207_219_Open_Text.style.display='none'; Codehighlighter1_207_219_Closed_Image.style.display='inline'; Codehighlighter1_207_219_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_207_219_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_207_219_Closed_Text.style.display='none'; Codehighlighter1_207_219_Open_Image.style.display='inline'; Codehighlighter1_207_219_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_207_219_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_207_219_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">Read&nbsp;size</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">please&nbsp;input&nbsp;the&nbsp;size\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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><img id=Codehighlighter1_282_289_Open_Image onclick="this.style.display='none'; Codehighlighter1_282_289_Open_Text.style.display='none'; Codehighlighter1_282_289_Closed_Image.style.display='inline'; Codehighlighter1_282_289_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_282_289_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_282_289_Closed_Text.style.display='none'; Codehighlighter1_282_289_Open_Image.style.display='inline'; Codehighlighter1_282_289_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_282_289_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_282_289_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">Init</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;x</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;y</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;dir</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;memset(arr,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(arr));<br><img id=Codehighlighter1_347_354_Open_Image onclick="this.style.display='none'; Codehighlighter1_347_354_Open_Text.style.display='none'; Codehighlighter1_347_354_Closed_Image.style.display='inline'; Codehighlighter1_347_354_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_347_354_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_347_354_Closed_Text.style.display='none'; Codehighlighter1_347_354_Open_Image.style.display='inline'; Codehighlighter1_347_354_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_347_354_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_347_354_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">fill</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(data</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;data</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n;&nbsp;data</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_393_623_Open_Image onclick="this.style.display='none'; Codehighlighter1_393_623_Open_Text.style.display='none'; Codehighlighter1_393_623_Closed_Image.style.display='inline'; Codehighlighter1_393_623_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_393_623_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_393_623_Closed_Text.style.display='none'; Codehighlighter1_393_623_Open_Image.style.display='inline'; Codehighlighter1_393_623_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_393_623_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_393_623_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[x][y]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;data;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextx</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;x</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">intx[dir];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nexty</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;y</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">inty[dir];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(arr[nextx][nexty]&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;nextx</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">n&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;nexty</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">n&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;nextx</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;nexty</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_540_580_Open_Image onclick="this.style.display='none'; Codehighlighter1_540_580_Open_Text.style.display='none'; Codehighlighter1_540_580_Closed_Image.style.display='inline'; Codehighlighter1_540_580_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_540_580_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_540_580_Closed_Text.style.display='none'; Codehighlighter1_540_580_Open_Image.style.display='inline'; Codehighlighter1_540_580_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_540_580_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_540_580_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(dir</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">)dir</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;intx[dir];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;inty[dir];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">;&nbsp;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_650_729_Open_Image onclick="this.style.display='none'; Codehighlighter1_650_729_Open_Text.style.display='none'; Codehighlighter1_650_729_Closed_Image.style.display='inline'; Codehighlighter1_650_729_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_650_729_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_650_729_Closed_Text.style.display='none'; Codehighlighter1_650_729_Open_Image.style.display='inline'; Codehighlighter1_650_729_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_650_729_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_650_729_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">0</span><span style="COLOR: #000000">;&nbsp;j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n;&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\t</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,arr[i][j]);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p>&nbsp;</p>
<p>如果碰到另外一种情况就麻烦多了</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;21&nbsp; 22................<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20&nbsp; 7&nbsp; 8&nbsp; 9&nbsp; 10<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19&nbsp; 6&nbsp; <span style="BACKGROUND-COLOR: yellow">1</span>&nbsp; 2&nbsp; 11<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp; 5&nbsp; 4&nbsp; 3&nbsp; 12<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17&nbsp; 16 15 14 13<br><br>如果从中间开始模拟</p>
<p>从原点1开始，看方向的变化：右下左上；行走的步数：11223344&#8230;&#8230;</p>
<p>&nbsp;公式：n^2= 1+1+2+2+...+n-1+n-1+n（第一种情况也有用到）</p>
<p>有了公式，那就可以先算出最大的data是多少，这样又转换为第一种方法了。</p>
<p>如果没有公式，单纯对行为进行模拟难度很大，不过还是可以实现的。</p>
<p>现在暂时还没有想到实现的方法，想到以后再补充吧。<br>&nbsp;</p>
<img src ="http://www.cppblog.com/issayandfaye/aggbug/100976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/issayandfaye/" target="_blank">iSsay</a> 2009-11-15 16:02 <a href="http://www.cppblog.com/issayandfaye/archive/2009/11/15/100976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习相关</title><link>http://www.cppblog.com/issayandfaye/archive/2009/11/11/100677.html</link><dc:creator>iSsay</dc:creator><author>iSsay</author><pubDate>Tue, 10 Nov 2009 16:40:00 GMT</pubDate><guid>http://www.cppblog.com/issayandfaye/archive/2009/11/11/100677.html</guid><wfw:comment>http://www.cppblog.com/issayandfaye/comments/100677.html</wfw:comment><comments>http://www.cppblog.com/issayandfaye/archive/2009/11/11/100677.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/issayandfaye/comments/commentRss/100677.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/issayandfaye/services/trackbacks/100677.html</trackback:ping><description><![CDATA[<p><span style="BACKGROUND-COLOR: yellow">要看的书：</span></p>
<p>&lt;算法导论&gt; <br>&lt;算法艺术与信息学竞赛&gt; <br>&lt;图论的算法与程序设计&gt;<br>&lt;国际大学生程序设计竞赛例题解&gt; <br>&lt;基本算法&gt;<br>&lt;骗分导论&gt;<br>&lt;国际大学生程序设计竞赛例题解(一)&gt;-&lt;数论、计算几何、搜索算法专集&gt;<br>&lt;国际大学生程序设计竞赛例题解(三)&gt;-&lt;图论、动态规划算法、综合题专集&gt;</p>
<p><span style="BACKGROUND-COLOR: yellow">学习规划：</span></p>
<p>一、第一阶段（11月13日 &#8211; 12月4日）主要完成的算法： <br>1、基本数据结构： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 线性表、链表（尤其双向链表和循环链表）、栈、二叉树 <br>2、加减乘除四则运算的高精度算法 <br>3、了解算法思想：DP、贪心、二分 <br>4、查找与排序：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;二分查找、二叉排序数、qsort函数、归并排序、HASH <br>5、图论基础算法：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DFS、BFS、MST（Prim）、Dijkstra、Floyd 、拓扑排序、割点 <br>6、数学知识：初等数论（整除、同余） </p>
<p>二、第二阶段（12月25日 &#8211; 2月1日）主要完成的算法： <br>1、高级数据结构：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 堆、并查集及路径压缩（Kruskal）、线段树 <br>2、图论高级算法：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 二分图匹配（匈牙利算法）、网络流、最小费用流、最大团、最大独立集、中国邮路问题、找Hamilton圈、寻找欧拉回路、着色问题、连通性判定、传递闭包和差分约束系统 <br>3、博弈算法：博弈树、寻找必败类算法 <br>4、计算几何：&nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 判断线段相交、判断点是否在多边形内、凸包、矩形的交与并、两直线相交问题、已知三点求圆心 <br>5、高级数学知识：（组合数学、具体数学中为主）&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; Fibonacci、Catalan数的应用、差分序列和Stirling数、Burnside定理和置换群、容斥原理、概率问题、生成排列数 <br>6、高级搜索技巧：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;双向BFS、A*算法（启发式搜索）、最小消耗优先、变深度优先搜索 </p>
<p>三、三个算法思想的具体训练内容：</p>
<p><br>1）、DP 重中之重 （准备拿出3天做DP一种类型） <br>要解决的经典例题：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、 最长不下降子序列（Longest Increasing Subsequence）&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、 最长公共子序列 (Longest Common Subsequence)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、 矩阵链乘法 (Matrix Multiplication)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4、0-1背包&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、凸多边形的最优三角划分&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、多边形游戏 ---- 三角大战 </p>
<p>2）、Greedy 贪心算法 高效优选算法 <br>要解决的经典问题：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、0-1背包&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、MST（Prim、Kruskal）&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、Dijkstra&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、Huffman Tree Code（霍夫曼编码） </p>
<p>3)、二分法 <br>要解决的经典问题：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; １、 归并排序算法求逆序数 (Inversion Number)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ２、 最近点对&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ３、 几种常见算法的二分查找优化：LIS　(最长不下降子序列) </p>
<img src ="http://www.cppblog.com/issayandfaye/aggbug/100677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/issayandfaye/" target="_blank">iSsay</a> 2009-11-11 00:40 <a href="http://www.cppblog.com/issayandfaye/archive/2009/11/11/100677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>