⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_55889.htm

📁 vc
💻 HTM
字号:
<p>
序号:55889 发表者:estelle 发表日期:2003-10-13 20:45:55
<br>主题:请教关于4*3*2*1排列的问题
<br>内容:我有一个一维数组P[4],这四个数有4*3*2*1种排列,我想知道用什么样的方法才能一一列举出这些排列。谢谢各位大虾!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:hurtmanzc 回复日期:2003-10-13 22:03:15
<br>内容:int p[5],i1,i2,i3,i4;<BR>p[0]=0;//第一个空出,这样只为好读一点<BR>p[1]=1;<BR>p[2]=2;<BR>p[3]=3;<BR>p[4]=4;<BR>for(i1=1;i1&lt;=4;i1++)<BR> for(i2=1;i2&lt;=4;i2++)<BR>&nbsp;&nbsp;for(i3=1;i3&lt;=4;i3++)<BR>&nbsp;&nbsp; for(i4=1;i4&lt;=4;i4++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i1!=i2&amp;&amp;i1!=i3&amp;&amp;i1!=i4&amp;&amp;i2!=i3&amp;&amp;i2!=i4&amp;&amp;i3!=i4)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;%d-&gt;%d-&gt;%d-&gt;%d\n&#34;,p[i1],p[i2],p[i3],p[i4])<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:独行侠1 回复日期:2003-10-13 22:33:07
<br>内容:这个算法无谓做了许多没用的循环。<BR>如果一维数组的个数超大,则次算法的效率极低。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:adam&amp;amp;ancy 回复日期:2003-10-14 04:08:29
<br>内容:那你自己做个来看看。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:estelle 回复日期:2003-10-14 08:52:17
<br>内容:谢谢hurtmanzc的帮助!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:独行侠1 回复日期:2003-10-14 21:10:01
<br>内容:这个程序的循环次数少一些,且每次循环都是比不可少的:<BR><BR>int p[4]={1,2,3,4};<BR>for(int i=0;i&lt;=3;i++)<BR>&nbsp;&nbsp; for(int j=(i+1)%4;j!=i;j=(j+1)%4)<BR>&nbsp;&nbsp;&nbsp;&nbsp; for(int m=(j+1)%4;m!=j;m=(m+1)%4)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(m==i) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int n=(m+1)%4;n!=m;n=(n+1)%4)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(n==i||n==j) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;p[i]&lt;&lt;p[j]&lt;&lt;p[m]&lt;&lt;p[n]&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hurtmanzc 回复日期:2003-10-15 20:07:50
<br>内容:我所给出的算法的确效率不高,我只是提供一个思路,要提高效率也不难,只要在每层循环进行判断,当该层循环的次数等于上层循环次数时,用continue跳出,这样循环次数会大大减少。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -