﻿<?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++博客-xinguohenan</title><link>http://www.cppblog.com/xinguohenan/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 21:56:08 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 21:56:08 GMT</pubDate><ttl>60</ttl><item><title>poj1088</title><link>http://www.cppblog.com/xinguohenan/archive/2009/05/21/83628.html</link><dc:creator>xinguohenan</dc:creator><author>xinguohenan</author><pubDate>Thu, 21 May 2009 15:51:00 GMT</pubDate><guid>http://www.cppblog.com/xinguohenan/archive/2009/05/21/83628.html</guid><wfw:comment>http://www.cppblog.com/xinguohenan/comments/83628.html</wfw:comment><comments>http://www.cppblog.com/xinguohenan/archive/2009/05/21/83628.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xinguohenan/comments/commentRss/83628.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xinguohenan/services/trackbacks/83628.html</trackback:ping><description><![CDATA[<p><a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=1088">http://acm.pku.edu.cn/JudgeOnline/problem?id=1088</a></p>
<p>虽然对搞ACM的人很简单，但是对我这种非专业人士而言也有点难度，而且是第一次写记忆化搜索的dp。</p>
<p><span class="sh_preproc">#include</span><span class="sh_string">&lt;stdio.h&gt;</span><br><span class="sh_type">int</span> <span class="sh_function">dp</span><span class="sh_symbol">(</span><span class="sh_type">int</span> row<span class="sh_symbol">,</span><span class="sh_type">int</span> col<span class="sh_symbol">);</span><br><span class="sh_type">int</span> calculated<span class="sh_symbol">[</span><span class="sh_number">100</span><span class="sh_symbol">][</span><span class="sh_number">100</span><span class="sh_symbol">],</span>r<span class="sh_symbol">,</span>c<span class="sh_symbol">,</span>min_x<span class="sh_symbol">,</span>min_y<span class="sh_symbol">;</span><br><span class="sh_type">int</span> sum<span class="sh_symbol">[</span><span class="sh_number">100</span><span class="sh_symbol">][</span><span class="sh_number">100</span><span class="sh_symbol">],</span>board<span class="sh_symbol">[</span><span class="sh_number">100</span><span class="sh_symbol">][</span><span class="sh_number">100</span><span class="sh_symbol">],</span>result<span class="sh_symbol">;</span><br><span class="sh_type">int</span> dx<span class="sh_symbol">[</span><span class="sh_number">4</span><span class="sh_symbol">]</span> <span class="sh_symbol">=</span> <span class="sh_cbracket">{</span><span class="sh_number">0</span><span class="sh_symbol">,</span><span class="sh_number">0</span><span class="sh_symbol">,</span><span class="sh_number">1</span><span class="sh_symbol">,-</span><span class="sh_number">1</span><span class="sh_cbracket">}</span> <span class="sh_symbol">,</span> dy<span class="sh_symbol">[</span><span class="sh_number">4</span><span class="sh_symbol">]</span> <span class="sh_symbol">=</span> <span class="sh_cbracket">{</span><span class="sh_number">1</span><span class="sh_symbol">,-</span><span class="sh_number">1</span><span class="sh_symbol">,</span><span class="sh_number">0</span><span class="sh_symbol">,</span><span class="sh_number">0</span><span class="sh_cbracket">}</span><span class="sh_symbol">;</span><br><span class="sh_type">int</span> <span class="sh_function">main</span><span class="sh_symbol">()</span><br><span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_type">int</span> i<span class="sh_symbol">,</span>j<span class="sh_symbol">,</span>k<span class="sh_symbol">,</span>min <span class="sh_symbol">=</span> <span class="sh_number">10001</span><span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_function">scanf</span><span class="sh_symbol">(</span><span class="sh_string">"%d%d"</span><span class="sh_symbol">,&amp;</span>r<span class="sh_symbol">,&amp;</span>c<span class="sh_symbol">);</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">for</span> <span class="sh_symbol">(</span>i <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>i <span class="sh_symbol">&lt;</span> <span class="sh_number">100</span><span class="sh_symbol">;</span>i<span class="sh_symbol">++)</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">for</span> <span class="sh_symbol">(</span>j <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>j <span class="sh_symbol">&lt;</span> <span class="sh_number">100</span><span class="sh_symbol">;</span>j<span class="sh_symbol">++)</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">{</span> sum<span class="sh_symbol">[</span>i<span class="sh_symbol">][</span>j<span class="sh_symbol">]</span> <span class="sh_symbol">=</span> <span class="sh_number">1</span><span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calculated<span class="sh_symbol">[</span>i<span class="sh_symbol">][</span>j<span class="sh_symbol">]</span> <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">}</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">for</span> <span class="sh_symbol">(</span>i <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>i <span class="sh_symbol">&lt;</span> r<span class="sh_symbol">;</span>i<span class="sh_symbol">++)</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">for</span> <span class="sh_symbol">(</span>j <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>j <span class="sh_symbol">&lt;</span> c<span class="sh_symbol">;</span>j<span class="sh_symbol">++)</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<span class="sh_function">scanf</span><span class="sh_symbol">(</span><span class="sh_string">"%d"</span><span class="sh_symbol">,&amp;</span>board<span class="sh_symbol">[</span>i<span class="sh_symbol">][</span>j<span class="sh_symbol">]);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>board<span class="sh_symbol">[</span>i<span class="sh_symbol">][</span>j<span class="sh_symbol">]</span> <span class="sh_symbol">&lt;</span> min<span class="sh_symbol">)</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min <span class="sh_symbol">=</span> board<span class="sh_symbol">[</span>i<span class="sh_symbol">][</span>j<span class="sh_symbol">];</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_x <span class="sh_symbol">=</span> i<span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_y <span class="sh_symbol">=</span> j<span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">}</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">}</span><br>&nbsp;&nbsp;&nbsp; result 
<span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">for</span> <span class="sh_symbol">(</span>i <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>i <span class="sh_symbol">&lt;</span> r<span class="sh_symbol">;</span>i<span class="sh_symbol">++)</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">for</span> <span class="sh_symbol">(</span>j <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>j <span class="sh_symbol">&lt;</span> c<span class="sh_symbol">;</span>j<span class="sh_symbol">++)</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<span class="sh_function">dp</span><span class="sh_symbol">(</span>i<span class="sh_symbol">,</span>j<span class="sh_symbol">);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>result <span class="sh_symbol">&lt;</span> sum<span class="sh_symbol">[</span>i<span class="sh_symbol">][</span>j<span class="sh_symbol">])</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result 
<span class="sh_symbol">=</span> sum<span class="sh_symbol">[</span>i<span class="sh_symbol">][</span>j<span class="sh_symbol">];</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">}</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_function">printf</span><span class="sh_symbol">(</span><span class="sh_string">"%d</span><span class="sh_specialchar">\n</span><span class="sh_string">"</span><span class="sh_symbol">,</span>result<span class="sh_symbol">);</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">return</span> <span class="sh_number">0</span><span class="sh_symbol">;</span><br><span class="sh_cbracket">}</span><br><br><span class="sh_type">int</span> <span class="sh_function">dp</span><span class="sh_symbol">(</span><span class="sh_type">int</span> row<span class="sh_symbol">,</span><span class="sh_type">int</span> col<span class="sh_symbol">)</span><br><span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_type">int</span> i<span class="sh_symbol">,</span>j<span class="sh_symbol">,</span>temp_row<span class="sh_symbol">,</span>temp_col<span class="sh_symbol">,</span>temp_sum<span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>calculated<span class="sh_symbol">[</span>row<span class="sh_symbol">][</span>col<span class="sh_symbol">])</span> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_keyword">return</span> 
sum<span class="sh_symbol">[</span>row<span class="sh_symbol">][</span>col<span class="sh_symbol">];</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">else</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_keyword">for</span> <span class="sh_symbol">(</span>i <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>i <span class="sh_symbol">&lt;</span> <span class="sh_number">4</span><span class="sh_symbol">;</span>i<span class="sh_symbol">++)</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp_row <span class="sh_symbol">=</span> row <span class="sh_symbol">+</span> dx<span class="sh_symbol">[</span>i<span class="sh_symbol">];</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp_col 
<span class="sh_symbol">=</span> col <span class="sh_symbol">+</span> dy<span class="sh_symbol">[</span>i<span class="sh_symbol">];</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_keyword">if</span><span class="sh_symbol">(</span>temp_row <span class="sh_symbol">&gt;=</span> <span class="sh_number">0</span> <span class="sh_symbol">&amp;&amp;</span> temp_row <span class="sh_symbol">&lt;</span> r 
<span class="sh_symbol">&amp;&amp;</span> temp_col <span class="sh_symbol">&gt;=</span> <span class="sh_number">0</span> <span class="sh_symbol">&amp;&amp;</span> temp_col <span class="sh_symbol">&lt;</span> c 
<span class="sh_symbol">&amp;&amp;</span> board<span class="sh_symbol">[</span>temp_row<span class="sh_symbol">][</span>temp_col<span class="sh_symbol">]</span> <span class="sh_symbol">&gt;</span> board<span class="sh_symbol">[</span>row<span class="sh_symbol">][</span>col<span class="sh_symbol">])</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp_sum <span class="sh_symbol">=</span> <span class="sh_function">dp</span><span class="sh_symbol">(</span>temp_row<span class="sh_symbol">,</span>temp_col<span class="sh_symbol">)</span> <span class="sh_symbol">+</span> <span class="sh_number">1</span><span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>temp_sum <span class="sh_symbol">&gt;</span> sum<span class="sh_symbol">[</span>row<span class="sh_symbol">][</span>col<span class="sh_symbol">])</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum<span class="sh_symbol">[</span>row<span class="sh_symbol">][</span>col<span class="sh_symbol">]</span> <span class="sh_symbol">=</span> temp_sum<span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calculated<span class="sh_symbol">[</span>row<span class="sh_symbol">][</span>col<span class="sh_symbol">]</span> <span class="sh_symbol">=</span> <span class="sh_number">1</span><span class="sh_symbol">;</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="sh_keyword">return</span> sum<span class="sh_symbol">[</span>row<span class="sh_symbol">][</span>col<span class="sh_symbol">];</span><br>&nbsp;&nbsp;&nbsp; <span class="sh_cbracket">}</span><br><span class="sh_cbracket">}</span></p>
<img src ="http://www.cppblog.com/xinguohenan/aggbug/83628.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xinguohenan/" target="_blank">xinguohenan</a> 2009-05-21 23:51 <a href="http://www.cppblog.com/xinguohenan/archive/2009/05/21/83628.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>