﻿<?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>BlogJava-java fans-文章分类-C/C++学习</title><link>http://www.blogjava.net/jlin/category/33087.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 20 Sep 2008 15:11:36 GMT</lastBuildDate><pubDate>Sat, 20 Sep 2008 15:11:36 GMT</pubDate><ttl>60</ttl><item><title>0-1背包问题的求解</title><link>http://www.blogjava.net/jlin/articles/218920.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Thu, 31 Jul 2008 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/218920.html</guid><description><![CDATA[<span style="font-size: 12pt">#include&lt;iostream&gt;<br />
#include&lt;string&gt;<br />
using namespace std;<br />
int mVal,nVal;<br />
int *pOut;<br />
void calFun(int m,int n){<br />
&nbsp;if(m&lt;1 ||n&lt;1||(n==1&amp;&amp;m!=1))<br />
&nbsp; return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m==n){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; pOut[n] =1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; for(int i=1;i&lt;=nVal;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;if(pOut[i])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;cout&lt;&lt;i&lt;&lt;" ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; cout&lt;&lt;endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; pOut[n]=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calFun(m,n-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pOut[n]=1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calFun(m-n,n-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pOut[n]=0;<br />
}<br />
int main(){<br />
&nbsp;cout&lt;&lt;"m:";<br />
&nbsp;cin&gt;&gt;mVal;<br />
&nbsp;cout&lt;&lt;"n:";<br />
&nbsp;cin&gt;&gt;nVal;<br />
&nbsp;if(mVal&lt;nVal) nVal =mVal;//&#177;&#200;&#189;&#207;n&#186;&#205;m&#196;&#199;&#184;&#246;&#180;&#243;<br />
&nbsp;pOut = new int [nVal+1];<br />
&nbsp;memset(pOut,0,(nVal+1)*sizeof(int));<br />
&nbsp;calFun(mVal,nVal);<br />
&nbsp;delete []pOut;<br />
&nbsp;return 0;<br />
}</span>
  <img src ="http://www.blogjava.net/jlin/aggbug/218920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2008-07-31 10:53 <a href="http://www.blogjava.net/jlin/articles/218920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速排序算法</title><link>http://www.blogjava.net/jlin/articles/218156.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Mon, 28 Jul 2008 11:35:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/218156.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/218156.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/218156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/218156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/218156.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt">#include&lt;iostream&gt;<br />
#include&lt;stdio.h&gt;<br />
#include&lt;conio.h&gt;<br />
#include&lt;string.h&gt;<br />
using namespace std;<br />
typedef int* SeqList;<br />
int partition(SeqList r,int i,int j){<br />
&nbsp;//调用partition(R,low,high)时，对R[low...high]做划分并返回基准记录的位置。<br />
&nbsp;int pivot =r[i];//用区间的第一个记录作为基准<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //pivot 相当于在位置i上。<br />
&nbsp;while(i&lt;j){ //从区间两端交替向中间扫描，直至i=j<br />
&nbsp;&nbsp;while(i&lt;j&amp;&amp;r[j]&gt;=pivot)<br />
&nbsp;&nbsp;j--;//从右向左扫描，查找第一个关键字小于pivot的记录r[j]<br />
&nbsp;&nbsp;if(i&lt;j) //表示找到的r[j]&lt;pivot<br />
&nbsp;&nbsp;r[i++]=r[j]; //相当于交换r[i]和r[j],交换后i指针加1<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;while(i&lt;j&amp;&amp;r[i]&lt;=pivot) //从左向右扫描，查找第1个关键字大于pivot的记录r[i]<br />
&nbsp;&nbsp;i++;<br />
&nbsp;&nbsp;if(i&lt;j)//表示找到了r[i],使r[i]&gt;pivot<br />
&nbsp;&nbsp;r[j--]=r[i];//相当于交换r[i]和r[j],交换后指针减一。<br />
&nbsp;}<br />
&nbsp;r[i]=pivot;//基准记录已被最后定位。<br />
&nbsp;return i;<br />
}<br />
void quicksort(SeqList r,int low,int high){ //对R[low....high]快速排序。<br />
&nbsp;int pivot;//划分后的基准记录的位置。<br />
&nbsp;if(low&lt;high){//仅当区间的长度大于1时，才排序。<br />
&nbsp;&nbsp;pivot=partition(r,low,high);<br />
&nbsp;&nbsp;//对R[low...high]做划分。<br />
&nbsp;&nbsp;quicksort(r,low,pivot-1);//对左区间递归排序。<br />
&nbsp;&nbsp;quicksort(r,pivot+1,high);//对右区间递归排序。<br />
&nbsp;}<br />
}<br />
int main(){<br />
&nbsp;int a[]={1,4,5,7,9,10,2,3,8,6};<br />
&nbsp;printf("\nbegin sort:");<br />
&nbsp;for(int i=0 ;i&lt;10;i++)<br />
&nbsp;printf("%3d&nbsp; ",a[i]);<br />
&nbsp;quicksort(a,0,9);<br />
&nbsp;printf("\nafert sort:");<br />
&nbsp;for(int i=0 ;i&lt;10;i++)<br />
&nbsp;printf("%3d&nbsp; ",a[i]);<br />
}<br />
</span>
<img src ="http://www.blogjava.net/jlin/aggbug/218156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2008-07-28 19:35 <a href="http://www.blogjava.net/jlin/articles/218156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C语言运算符优先级顺口溜[转]</title><link>http://www.blogjava.net/jlin/articles/215794.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Fri, 18 Jul 2008 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/215794.html</guid><description><![CDATA[<p><span><font size="+0">C语言运算符优先级顺口溜[转]</font></span></p>
<p><span><font size="+0">醋坛酸味灌</font> <br />
<font size="+0">味落跳福豆</font> <br />
<br />
共44个运算符 <br />
<br />
醋－初等，4个： ( ) [ ] -&gt; 指向结构体成员 . 结构体成员 <br />
坛－单目，9个： ! ~ ++ -- -负号 (类型)&nbsp;&nbsp; *指针 &amp;取地址 sizeof长度 （结合方向：自右向左）<br />
酸－算术，5个： * / % + -减 <br />
味－位移，2个： &lt;&lt; &gt;&gt; <br />
灌－关系，6个： &lt; &lt;= &gt; &gt;= <font color="#ff0000">== 等于</font> != 不等于 <br />
味－位逻，3个： <font color="#ff0000">&amp; 按位与</font> ^ 按位异或 | 按位或 <br />
落－逻辑，2个： &amp;&amp; 逻辑与 || 逻辑或 <br />
跳－条件，1个，三目： ? :&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 />
福－赋值，11个： = += -= *= /= %= &gt;&gt;= &lt;&lt;= &amp;= ^= |=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （结合方向：自右向左）<br />
豆－逗号，1个： , <br />
</span><span>结合方向自右向左的只有三类：赋值、单目和三目，其它的都是从左至右结合。</span></p>
<p><span><br />
</span></p>
<p><span>具有最高优先级的其实并不算是真正的运算符，它们算是一类特殊的操作。()是与函数相关，[]与数组相关，而－&gt;及.是取结构成员。<br />
其次是单目运算符，所有的单目运算符具有相同的优先级，因此在我认为的 真正的运算符中它们具有最高的优先级，又由于它们都是<font color="#ff0000">从右至左结合的，因此*p++与*(p++)等效是毫无疑问的。<br />
</font>接下来是算术运算符，*、/、%的优先级当然比+、－高了。<br />
移位运算符紧随其后。<br />
其次的关系运算符中，&lt; &lt;= &gt; &gt;=要比 == !=高一个级别，不大好理解。<br />
所有的逻辑操作符都具有不同的优先级（单目运算符出外，！和~）<br />
逻辑位操作符的"与"比"或"高，而"异或"则在它们之间。<br />
跟在其后的&amp;&amp;比||高。<br />
接下来的是条件运算符，赋值运算符及逗号运算符。<br />
<br />
<font color="#ff0000">在C语言中，只有4个运算符规定了运算方向，它们是&amp;&amp;、| |、条件运算符及赋值运算符。<br />
</font>&amp;&amp;、| |都是先计算左边表达式的值，当左边表达式的值能确定整个表达式的值时，就不再计算右边表达式的值。如 a = 0 &amp;&amp; b; &amp;&amp;运算符的左边位0，则右边表达式b就不再判断。<br />
在条件运算符中。如a?b:c；先判断a的值，再根据a的值对b或c之中的一个进行求值。<br />
赋值表达式则规定先对右边的表达式求值，因此使 a = b = c = 6;成为可能<br />
</p>
<p><font face="宋体">运算符按照优先级大小由上向下排列，在同一行的运算符具有相同优先级。第二行是所有的一元运算符。</font> <br />
&nbsp;
<table style="color: #000000" bordercolor="#000000" cellspacing="2" width="622" border="1">
    <tbody>
        <tr>
            <td valign="top" width="31%"><font face="宋体">运算符</font>
            <td valign="top" width="52%"><font face="宋体">解释</font>
            <td valign="top" width="17%"><font face="宋体">结合方式</font>
            <tr>
                <td valign="top" width="31%"><font face="Courier New">() [] -&gt; .</font>
                <td valign="top" width="52%"><font face="宋体">括号（函数等），数组，两种结构成员访问</font>
                <td valign="top" width="17%"><font face="宋体">由左向右</font>
                <tr>
                    <td valign="top" width="31%"><font face="Courier New">! ~ ++ -- + -&nbsp;</font>
                    <p><font face="Courier New">* &amp; (</font><font face="宋体">类型</font><font face="Courier New">) sizeof</font> </p>
                    <td valign="top" width="52%"><font face="宋体">否定，按位否定，增量，减量，正负号，</font>
                    <p><font face="宋体">间接，取地址，类型转换，求大小</font> </p>
                    <td valign="top" width="17%"><font face="宋体">由右向左</font>
                    <tr>
                        <td valign="top" width="31%"><font face="Courier New">* / %</font>
                        <td valign="top" width="52%"><font face="宋体">乘，除，取模</font>
                        <td valign="top" width="17%"><font face="宋体">由左向右</font>
                        <tr>
                            <td valign="top" width="31%"><font face="Courier New">+ -</font>
                            <td valign="top" width="52%"><font face="宋体">加，减</font>
                            <td valign="top" width="17%"><font face="宋体">由左向右</font>
                            <tr>
                                <td valign="top" width="31%"><font face="Courier New">&lt;&lt; &gt;&gt;</font>
                                <td valign="top" width="52%"><font face="宋体">左移，右移</font>
                                <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                <tr>
                                    <td valign="top" width="31%"><font face="Courier New">&lt; &lt;= &gt;= &gt;</font>
                                    <td valign="top" width="52%"><font face="宋体">小于，小于等于，大于等于，大于</font>
                                    <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                    <tr>
                                        <td valign="top" width="31%"><font face="Courier New">== !=</font>
                                        <td valign="top" width="52%"><font face="宋体">等于，不等于</font>
                                        <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                        <tr>
                                            <td valign="top" width="31%"><font face="Courier New">&amp;</font>
                                            <td valign="top" width="52%"><font face="宋体">按位与</font>
                                            <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                            <tr>
                                                <td valign="top" width="31%"><font face="Courier New">^</font>
                                                <td valign="top" width="52%"><font face="宋体">按位异或</font>
                                                <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                                <tr>
                                                    <td valign="top" width="31%"><font face="Courier New">|</font>
                                                    <td valign="top" width="52%"><font face="宋体">按位或</font>
                                                    <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                                    <tr>
                                                        <td valign="top" width="31%"><font face="Courier New">&amp;&amp;</font>
                                                        <td valign="top" width="52%"><font face="宋体">逻辑与</font>
                                                        <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                                        <tr>
                                                            <td valign="top" width="31%"><font face="Courier New">||</font>
                                                            <td valign="top" width="52%"><font face="宋体">逻辑或</font>
                                                            <td valign="top" width="17%"><font face="宋体">由左向右</font>
                                                            <tr>
                                                                <td valign="top" width="31%"><font face="Courier New">? :</font>
                                                                <td valign="top" width="52%"><font face="宋体">条件</font>
                                                                <td valign="top" width="17%"><font face="宋体">由右向左</font>
                                                                <tr>
                                                                    <td valign="top" width="31%"><font face="Courier New">= += -= *= /=&nbsp;</font>
                                                                    <p><font face="Courier New">&amp;= ^= |= &lt;&lt;= &gt;&gt;=</font> </p>
                                                                    <td valign="top" width="52%"><font face="宋体">各种赋值</font>
                                                                    <td valign="top" width="17%"><font face="宋体">由右向左</font>
                                                                    <tr>
                                                                        <td valign="top" width="31%"><font face="Courier New">,</font>
                                                                        <td valign="top" width="52%"><font face="宋体">逗号（顺序）</font>
                                                                        <td valign="top" width="17%"><font face="宋体">由左向右</font></td>
                                                                    </tr>
                                                                </tbody>
                                                            </table>
                                                            </p>
                                                            </span>
 <img src ="http://www.blogjava.net/jlin/aggbug/215794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2008-07-18 15:00 <a href="http://www.blogjava.net/jlin/articles/215794.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>