这样比穷举计算次数要少些,但是因为递归会使效率下降。
所以综合起来就不知道哪个优了!
 
										
					
	
Fight to win or die...
 2007-06-24 10:26
	    2007-06-24 10:26
  我试了啊,报错了,我理解的:静态数组大小只能是常量。
但是确实在某些编译器上允许这样。
我机器上有3个,所以就测试了3次,dev-cpp中可以,vc不可以。
所以我疑惑。根据我目前所了解,可以设置大小只能用动态数组!

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

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

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