﻿<?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++博客-sijing</title><link>http://www.cppblog.com/sijing/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 11 Apr 2026 09:19:28 GMT</lastBuildDate><pubDate>Sat, 11 Apr 2026 09:19:28 GMT</pubDate><ttl>60</ttl><item><title>HDOJ 1267下沙的沙子有几粒？ （DP）</title><link>http://www.cppblog.com/sijing/archive/2010/08/02/121930.html</link><dc:creator>宇骐</dc:creator><author>宇骐</author><pubDate>Mon, 02 Aug 2010 02:24:00 GMT</pubDate><guid>http://www.cppblog.com/sijing/archive/2010/08/02/121930.html</guid><wfw:comment>http://www.cppblog.com/sijing/comments/121930.html</wfw:comment><comments>http://www.cppblog.com/sijing/archive/2010/08/02/121930.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/sijing/comments/commentRss/121930.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sijing/services/trackbacks/121930.html</trackback:ping><description><![CDATA[如果用f [ i ] [ j ]代表有i个H和j个D的序列的种数，则：<br>f [ i ][ j ] = f [ i-1 ][ j ] + f [ i ][ j-1 ]；<br>考虑最后一个字母是H还是D的情况，最后一个字母是D的情况的序列种数是f [ i ][ j-1 ]，最后一个字母是H的情况的序列种数是f [ i-1 ][ j ]。<br>
<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"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">包含此头文件是为了调用C风格的输出函数printf.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;__int64&nbsp;a[</span><span style="COLOR: #000000">21</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">21</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">也可以用memset(a,0,sizeof(a))需要包含头文件&lt;cstring&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">不过我刚刚测试了一下，不包含头文件&lt;string.h&gt;或者&lt;memory.h&gt;也没有关系。不懂！<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">甚至不初始化，该题也能AC！！！</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,j;<br>&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">20</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][</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: #008000">//</span><span style="COLOR: #008000">只要&#8216;D&#8217;的个数为0，&#8216;H&#8217;的个数为任意数，都是一种序列</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][i]</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">只要&#8216;H&#8217;的个数为0，&#8216;D&#8217;的个数为任意数，这种序列都不满足</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br>&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">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">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">20</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">j)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">遇到&#8216;H&#8217;个数少于&#8216;D&#8217;个数时，这种序列不满足。</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&#8216;H&#8217;个数大于或者等于&#8216;D&#8217;个数时，进入状态转移方程</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a[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">a[i][j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">DP核心</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m,n;<br>&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">m</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">n)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%I64d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,a[m][n]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}</span></div>
<img src ="http://www.cppblog.com/sijing/aggbug/121930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sijing/" target="_blank">宇骐</a> 2010-08-02 10:24 <a href="http://www.cppblog.com/sijing/archive/2010/08/02/121930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>递推的方法推导错排算法</title><link>http://www.cppblog.com/sijing/archive/2010/05/08/114857.html</link><dc:creator>宇骐</dc:creator><author>宇骐</author><pubDate>Sat, 08 May 2010 09:36:00 GMT</pubDate><guid>http://www.cppblog.com/sijing/archive/2010/05/08/114857.html</guid><wfw:comment>http://www.cppblog.com/sijing/comments/114857.html</wfw:comment><comments>http://www.cppblog.com/sijing/archive/2010/05/08/114857.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sijing/comments/commentRss/114857.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sijing/services/trackbacks/114857.html</trackback:ping><description><![CDATA[&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; <span style="COLOR: #0000ff"><strong style="FONT-SIZE: 24pt">递推的方法推导错排算法</strong></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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用<span style="COLOR: #00ffff">M(n)</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 那么<span style="COLOR: #00ffff">M(n-1)</span>就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.　　<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #ff00ff">第一步</span>：把第n个元素放在一个位置,比如位置k,一共有<span style="COLOR: #00ffff">n-1</span>种方法;　　<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #ff00ff">第二步</span>：放编号为k的元素,这时有两种情况.<br>&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; ①把它放到位置n,那么,对于剩下的n-2个元素,就有<span style="COLOR: #00ffff">M(n-2)</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;&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; ②不把它放到位置n,这时,对于这n-1个元素,有<span style="COLOR: #00ffff">M(n-1)</span>种方法。　<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;综上得到
<table style="WIDTH: 332px; BORDER-COLLAPSE: collapse; HEIGHT: 43px" border=1 cellSpacing=0 cellPadding=3 align=left>
    <tbody>
        <tr>
            <td style="COLOR: red; FONT-SIZE: 10pt">
            <p style="COLOR: red" align=center><strong>M(n) = ( n - 1 ) [ M ( n - 2 ) + M ( n - 1 ) ]</strong></p>
            <p style="COLOR: red" align=center><strong>特殊地，M ( 1 ) = 0 , M ( 2 ) = 1</strong></p>
            </td>
        </tr>
    </tbody>
</table>
　　<br>&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>
<img src ="http://www.cppblog.com/sijing/aggbug/114857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sijing/" target="_blank">宇骐</a> 2010-05-08 17:36 <a href="http://www.cppblog.com/sijing/archive/2010/05/08/114857.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典算法题目——最长公共子序列问题</title><link>http://www.cppblog.com/sijing/archive/2010/04/25/113527.html</link><dc:creator>宇骐</dc:creator><author>宇骐</author><pubDate>Sun, 25 Apr 2010 11:33:00 GMT</pubDate><guid>http://www.cppblog.com/sijing/archive/2010/04/25/113527.html</guid><wfw:comment>http://www.cppblog.com/sijing/comments/113527.html</wfw:comment><comments>http://www.cppblog.com/sijing/archive/2010/04/25/113527.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/sijing/comments/commentRss/113527.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sijing/services/trackbacks/113527.html</trackback:ping><description><![CDATA[<span>&nbsp;
<p>给定两个序列<br>X = { x1 , x2 , ... , xm }<br>Y = { y1 , y2 , ... , yn }<br>求X和Y的一个最长公共子序列</p>
<p>举例<br>X = { a , b , c , b , d , a , b }<br>Y = { b , d , c , a , b , a }<br>最长公共子序列为<br>LSC = { b , c , b , a }</p>
<p>分析：</p>
<p>最长公共子序列问题具有最优子结构性质</p>
<p>设<br>X = { x1 , ... , xm }<br>Y = { y1 , ... , yn }<br>及它们的最长子序列<br>Z = { z1 , ... , zk }</p>
<p>则</p>
<p>1、若 xm = yn ， 则 zk = xm = yn，且Z[k-1] 是 X[m-1] 和 Y[n-1] 的最长公共子序列<br>2、若 xm != yn ，且 zk != xm , 则 Z 是 X[m-1] 和 Y 的最长公共子序列<br>3、若 xm != yn , 且 zk != yn , 则 Z 是 Y[n-1] 和 X 的最长公共子序列</p>
<p>由性质导出子问题的递归结构</p>
<p>当 i = 0 , j = 0 时 ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[i][j] = 0<br>当 i , j &gt; 0 ; xi = yi 时 ,&nbsp; c[i][j] = c[i-1][j-1] + 1<br>当 i , j &gt; 0 ; xi != yi 时 , c[i][j] = max { c[i][j-1] , c[i-1][j] }</p>
<p>////////////////////////////////////////<br>这种分析方法比较有用，值得保存，book<br>&nbsp;----《计算机机算法设计与分析》电子工业出版社<br>////////////////////////////////////////</p>
<p>// 书中只有关键部分的代码，现在已经补全<br>// 源程序</p>
<p>#include "iostream.h"<br>#include "iomanip.h"</p>
<p>#define max 100</p>
<p>void LCSLength( int m , int n , char *x , char *y , char *b )<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i , j , k;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int c[max][max];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for( i = 1 ; i &lt;= m ; i++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[i][0] = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( i = 1 ; i &lt;= n ; i++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;c[0][i] = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( i = 1 ; i &lt;= m ; i++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for( j = 1 ; j &lt;= n ; j++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if( x[i-1] == y[j-1] )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[i][j] = c[i-1][j-1] + 1;<br>&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;k = i * ( n + 1 ) + j;<br>&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;b[k] = '\\';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if( c[i-1][j] &gt;= c[i][j-1] )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[i][j] = c[i-1][j];<br>&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; k = i * ( n + 1 ) + j;<br>&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; b[k] = '|';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;c[i][j] = c[i][j-1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;k = i * ( n + 1 ) + j;<br>&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;b[k] = '-';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}</p>
<p>}<br>void LCS( int i , int j , char *x , char *b , int width )<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( i == 0 || j == 0 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int k = i * ( width + 1 ) + j;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( b[k] == '\\' )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LCS( i - 1 , j - 1 , x , b , width );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;x[i]&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if( b[k] == '|' )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;LCS( i - 1 , j , x , b , width );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;LCS( i , j - 1 , x , b , width );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</p>
<p>void main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;char x[max] = { 'a' , 'b' , 'c' , 'b' , 'd' , 'a' , 'b' };<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char y[max] = { 'b' , 'd' , 'c' , 'a' , 'b' , 'a' };<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int m = 7;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n = 6;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char b[max] = { 0 };</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LCSLength( m , n , x , y , b );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LCS( m , n , x , b , n );</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl&lt;&lt;endl;<br>}</p>
<p>////////////////////////////////////////</p>
</span>
<img src ="http://www.cppblog.com/sijing/aggbug/113527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sijing/" target="_blank">宇骐</a> 2010-04-25 19:33 <a href="http://www.cppblog.com/sijing/archive/2010/04/25/113527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组作为函数参数</title><link>http://www.cppblog.com/sijing/archive/2010/04/19/112996.html</link><dc:creator>宇骐</dc:creator><author>宇骐</author><pubDate>Mon, 19 Apr 2010 08:15:00 GMT</pubDate><guid>http://www.cppblog.com/sijing/archive/2010/04/19/112996.html</guid><wfw:comment>http://www.cppblog.com/sijing/comments/112996.html</wfw:comment><comments>http://www.cppblog.com/sijing/archive/2010/04/19/112996.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sijing/comments/commentRss/112996.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sijing/services/trackbacks/112996.html</trackback:ping><description><![CDATA[<p><strong>一维数组作为函数参数问题：<br></strong>首部<strong>：<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: red"><strong>fun (int&nbsp;&nbsp; a [ ])</strong></span> <strong>。<br></strong>调用<strong>：</strong><span style="COLOR: red">fun (&nbsp;数组名 )</span><strong> 。<br>多维数组作为函数参数问题：<br>形参必须是一个数组指针变量。</strong><br>格式如下：<br>首部：&lt;1&gt;、<span style="COLOR: red"><strong>fun ( int &nbsp; (*px) [N] ) </strong></span>。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;2&gt;、<span style="COLOR: red"><strong>fun ( int&nbsp;&nbsp; x [ ] [N] )</strong></span> 。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;3&gt;、<span style="COLOR: red"><strong>fun ( int&nbsp; &nbsp;x [M] [N] )</strong></span> 。<br>调用时:&nbsp; <span style="COLOR: red">fun(数组名)</span> 。</p>
<img src ="http://www.cppblog.com/sijing/aggbug/112996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sijing/" target="_blank">宇骐</a> 2010-04-19 16:15 <a href="http://www.cppblog.com/sijing/archive/2010/04/19/112996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>                                              小数位输出控制</title><link>http://www.cppblog.com/sijing/archive/2010/04/18/112888.html</link><dc:creator>宇骐</dc:creator><author>宇骐</author><pubDate>Sat, 17 Apr 2010 17:37:00 GMT</pubDate><guid>http://www.cppblog.com/sijing/archive/2010/04/18/112888.html</guid><wfw:comment>http://www.cppblog.com/sijing/comments/112888.html</wfw:comment><comments>http://www.cppblog.com/sijing/archive/2010/04/18/112888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sijing/comments/commentRss/112888.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sijing/services/trackbacks/112888.html</trackback:ping><description><![CDATA[<p style="COLOR: #ff00ff"><strong>按有效位输出是 setprecision，按小数位数输出也是setprecision，但到底是谁取决于fixed。</strong></p>
<p style="COLOR: #ff00ff"><strong>cout &lt;&lt; resetiosflags(ios::fixed) &lt;&lt; setprecision(n) &lt;&lt; float-point-number; 是按n位有效数输出</strong></p>
<p><strong style="COLOR: #ff00ff">cout &lt;&lt; setiosflags(ios::fixed) &lt;&lt; setprecision(n) &lt;&lt; float-point-number; 是按n位小数输出</strong></p>
<p>测试代码：</p>
<p>#include &lt;iostream&gt;</p>
<p>#include &lt;iomanip&gt;</p>
<p>using namespace std;</p>
<p>int main( void )</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp; const double value = 12.3456789;</p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; value &lt;&lt; endl; <span style="COLOR: red">// 默认以6精度，所以输出为 12.3457</span></p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; setprecision(4) &lt;&lt; value &lt;&lt; endl; <span style="COLOR: #ff0000">// 改成4精度，所以输出为12.35</span></p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; setprecision(8) &lt;&lt; value &lt;&lt; endl; <span style="COLOR: red">// 改成8精度，所以输出为12.345679</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; fixed &lt;&lt; setprecision(4) &lt;&lt; value &lt;&lt; endl; <span style="COLOR: red">// 加了fixed意味着是固定点方式显示，所以这里的精度指的是小数位，输出为12.3457</span>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; cout &lt;&lt; value &lt;&lt; endl; <span style="COLOR: red">// fixed和setprecision的作用还在，依然显示12.3457</span></p>
<p>&nbsp;&nbsp;&nbsp; cout.unsetf( ios::fixed );<span style="COLOR: red"> // 去掉了fixed，所以精度恢复成整个数值的有效位数，显示为12.35</span></p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; value &lt;&lt; endl;</p>
<p>&nbsp;&nbsp;&nbsp; cout.precision( 6 ); <span style="COLOR: red">// 恢复成原来的样子，输出为12.3457</span></p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; value &lt;&lt; endl;</p>
<p>}</p>
<img src ="http://www.cppblog.com/sijing/aggbug/112888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sijing/" target="_blank">宇骐</a> 2010-04-18 01:37 <a href="http://www.cppblog.com/sijing/archive/2010/04/18/112888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>