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

📄 subject_49749.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:49749 发表者:雨伞 发表日期:2003-08-13 15:52:53
<br>主题:新手求教一个算法问题.
<br>内容:问题不复杂,如下:<BR>假定有一列数组 int array[3]={1,2,3};<BR>怎样设计一个函数 move(...){...};使得此函数每运行一次,数组中数字的位置发生变化,返回一个新的数组,不能有重复,且能遍历所有的排列方式<BR>例如:<BR>{1,2,3}<BR>{2,1,3}<BR>{2,3,1}<BR>{3,2,1}<BR>{3,1,2}<BR>{1,3,2}<BR><BR>上面的例子是3个数字,如果有25个数字,怎么设计这个函数?<BR>请出手相助,谢谢
<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>回复者:wuyanmintiger 回复日期:2003-08-13 17:06:29
<br>内容:全排列:<BR><BR>#include "stdafx.h"<BR>#include "iostream.h"<BR><BR>#define MAX 10<BR><BR>int total=0;<BR><BR>void f(int * data,int * flag,int * result,int n,int count)<BR>{&nbsp;&nbsp; int i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(count==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;n-1;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;result[i]&lt;&lt;" ";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(flag[i]==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;data[i]&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;if(flag[i]==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result[n-count]=data[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag[i]=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f(data,flag,result,n,count-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag[i]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR><BR>int main(int argc, char* argv[])<BR>{&nbsp;&nbsp; int data[MAX], flag[MAX], result[MAX], n, count, i;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;MAX;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;data[i]=i+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag[i]=result[i]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;n=MAX+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(n&gt;MAX || n&lt;1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Please input a number (0&lt;n&lt;"&lt;&lt;MAX&lt;&lt;") :";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;n;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count=n;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(n&gt;MAX || n&lt;1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;endl&lt;&lt;"\t\tInput Number Error (0&lt;n&lt;"&lt;&lt;MAX&lt;&lt;")!"&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;f(data,flag,result,n,count);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;"\tthe total is :"&lt;&lt;total&lt;&lt;endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<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>
回复者:雨伞 回复日期:2003-08-15 00:02:26
<br>内容:谢了
<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 + -