📄 subject_19824.htm
字号:
<p>
序号:19824 发表者:moonbird 发表日期:2002-10-31 17:34:30
<br>主题:请教8皇后问题
<br>内容:我初学tc,问:<BR>首先是一个全排列问题:怎样把1,2,3,4,5,6的全排列输出??<BR><BR>与之类似的问题:在8*8的棋盘上如何放8个皇后,互相吃不到???<BR><BR>谢谢指教
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:yl02502 回复日期:2002-10-31 20:01:35
<br>内容:第一个问题可以用递归的方法做。<BR>第二个问题:某一个皇后(X,Y)的控制范围为A[X][]、A[][Y]、A[X+ -i][Y+ -i],用栈来实现寻找。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:moonbird 回复日期:2002-11-01 09:27:59
<br>内容:还是有些不明白。递归的方法是指用6个for语句来循环吗?能具体点吗?还有第二个它斜线的控制范围是指[x++][y++]吧?[x+ -i][y+ -i]是什么意思呢?我没见过,能讲解一下吗?谢谢了哦。还有栈是什么东西?没学过,讲解一下吗? 万分感谢!!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:逍遥 回复日期:2002-11-01 21:15:01
<br>内容:递归不是循环,是一个函数调用自身这个函数,例如这个简单的递归函数求n的皆乘y=1*2*3.......*(n-1)*n :<BR>main()<BR>{int y=n;<BR> y=JieCheng(n);<BR> printf(....y);<BR>}<BR><BR>int JieCheng(int n)<BR>{<BR> if(n>1)<BR> return (n * JieCheng(n-1)); /* 递归调用 JieCheng() */<BR> else<BR> return 1;<BR>}<BR><BR>这样很简单就可以求出n的皆乘了!<BR>例如n=3:<BR> 第一次调用函数,y = 3 * JieCheng(2)<BR> 其中JieCheng(2)又去求2的皆乘,结果: y= 3*2*JieCheng(1)<BR> 而由于条件n>1所以JieCheng(1)不在往下递归,返回1<BR> 则 结果:y=3*2*1<BR><BR>全排列类似,第一位从1到6。当选1时,后5位就是2到6的全排列,其余类推。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:moonbird 回复日期:2002-11-01 22:02:34
<br>内容:那jiecheng(1)是怎么算的呢?要定义吧。<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>
回复者:逍遥 回复日期:2002-11-02 12:25:29
<br>内容:呵呵~~~~~~~<BR>你再仔细看看JieCheng(n)函数的定义,里面不是有当n=1时,返回函数值 1 的分支选择吗!!!<BR> if(n>1)<BR> return (n * JieCheng(n-1)); /* 递归调用 JieCheng() */<BR> else<BR> return 1; //当n=1时,这句起作用!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:moonbird 回复日期:2002-11-02 17:25:01
<br>内容:哦<BR>知道了<BR>大体明白递归是个什么意思了。<BR>不过说起来好像很简单,做起来就不知道怎么下手了。<BR>输出的是个排列,6个数。是不是要用到数组呀。<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>
回复者:yl02502 回复日期:2002-11-02 21:19:40
<br>内容:8皇后问题:用A[8][8]数组,如被皇后控制则=1,否则=0,试探放入一个皇后,将位置压栈,刷新A,试探放入第二个皇后...,如没位置放,则弹出前一个,试探其他位置,...,注意,每一个皇后试探过的位置应保存,以免死循环。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yl02502 回复日期:2002-11-02 21:39:03
<br>内容:排列问题:可以理解为7可以插入前6个数的某个排列从0~6的位置F7i=F(7,F6j,i),如此F6...F1
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:percy chaos 回复日期:2002-11-10 17:57:41
<br>内容:<BR>//***************************************************//<BR>//** 输出由 0,1,2,3,4,5,6组成的六位数字 **// <BR>//** 六位数字不同,0数字允许带头 **//<BR>//**************************************************//<BR><BR>#include <iostream.h><BR>#include <math.h><BR>#include <stdlib.h><BR>#include <iomanip.h><BR><BR>void main()<BR>{<BR> cout<<" *** 运行结果 *** "<<endl<<endl;<BR> <BR>int i,j,k,l,m,n; //i-十万位 j-万位 k-千位 l-百位 m-十位 n-个位 <BR> cout<<(" 十万 万 千 百 十 个\n");<BR> for(i=0;i<7;i++)<BR> for(j=0;j<7;j++)<BR> for(k=0;k<7;k++)<BR> for(l=0;l<7;l++)<BR> for(m=0;l<7;m++)<BR> for(n=0;l<7;n++) <BR> if(i==j&&i==k&&i==l&&i==m&&i==n&&j==k&&j==l&&j==m&&j==n&&k==l&&k==m&&k==n&&l==m&&l==n&&m==n) <BR> cout;<BR> else<BR> cout<<setw(2)<<i<<setw(3)<<j<<setw(3)<<k<<setw(3)<<l<<setw(3)<<m<<setw(3)<<n<<endl; <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>
<font color=red>答案被接受</font><br>回复者:xiongli 回复日期:2002-11-10 18:15:09
<br>内容:我给你一个求任意全排列的<BR><BR><BR>define NUM 6<BR>int nLevel=0,List[256]={0},ALL;<BR><BR>p()<BR>{<BR> int nCount,nJudge,key;<BR> nLevel++;<BR> if(nLevel>NUM)<BR> {<BR> print();<BR> nLevel--;<BR> return;<BR> }<BR><BR> for(nCount=1;nCount<=NUM;nCount++)<BR> {<BR> key=0;<BR> for(nJudge=0;nJudge<=nLevel-1;nJudge++)<BR> if(nCount==List[nJudge])<BR> {<BR> key=1;<BR> break;<BR> }<BR> <BR> if(key==0)<BR> {<BR> List[nLevel]=nCount;<BR> p();<BR> }<BR> }<BR>nLevel--;<BR>}<BR><BR>print()<BR>{<BR> int nCount;ALL++;<BR> for(nCount=1;nCount<=NUM;nCount++)printf("%d ",List[nCount]);<BR> printf("\t%d\n",ALL);<BR>}<BR>main()<BR>{p();<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>
回复者:moonbird 回复日期:2002-11-11 11:26:44
<br>内容:thank you.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:small-rat 回复日期:2002-11-11 13:47:47
<br>内容:我只学过C,问一下这个SETW是什么函数.
<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 + -