这样比穷举计算次数要少些,但是因为递归会使效率下降。
所以综合起来就不知道哪个优了!

Fight to win or die...
2007-06-24 10:26
我试了啊,报错了,我理解的:静态数组大小只能是常量。
但是确实在某些编译器上允许这样。
我机器上有3个,所以就测试了3次,dev-cpp中可以,vc不可以。
所以我疑惑。根据我目前所了解,可以设置大小只能用动态数组!

2007-06-24 10:32
我大致看了下HJin对这个问题的解法,我如果写,我也会有个同样的问题,不仅这个问题,一切有关类似这样的递归回溯的问题都存在,比如皇后,比如我在46楼写那个题。
我很想看看kai你是怎么处理当n很大时的情况。当然,不要让程序一直运行个几天才算出来,呵呵~(我想的话)。

2007-06-24 10:57
第三题:(算法来自第69楼)
#include "iostream.h"
#include "stdio.h"
#include "iostream.h"
#include "conio.h"
main()
{
char ch[11]={'T','J','1','2','3','4','5','6','7','8','9'};
char output[21][21];
int i,j,m=0;
int x=1;
while (x)
{
while (!((m>=3&&m<=21)))
{
step: printf("输入一个3到20之间的数:");
scanf("%d",&m);
}
for(i=m;i>=0;i--)
{
for(j=i;j<=m-i;j++)
{
output[i][j]=ch[i];
output[j][i]=ch[i];
output[m-i][m-j]=ch[i];
output[m-j][m-i]=ch[i];
}
}
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
{
cout<<output[i][j];
}
cout<<"\n";
}
cout<<"输入任意数字继续,输入0退出!";
scanf("%d",&x);
if (x!=0) goto step;
}
}
2007-06-24 11:56

2007-06-24 12:18
2007-06-24 12:35
说的很有道理,但是递归对内存的开销并不都是不必要啊。难道所有的递归算法都可以被迭代取代而不用到栈?
期待你的solution,这样说不好懂
。
呵呵

2007-06-24 12:40

2007-06-24 14:52
2007-06-25 11:12

2007-06-25 12:38