爱问知识人 爱问教育 医院库

有362880种排列,如何用c 语言将它们排出来。

首页

有362880种排列,如何用c 语言将它们排出来。

1到9,9个数字,有362880种排列,如何用c  语言将它们排出来。请大师们指点。最好给出源代码。谢谢!

提交回答
好评回答
  • 2004-11-23 17:15:58
      上面的程序有问题,首先对指针没有初始化,其次结果不合要求。题意要求输出9位数字的所有组合(这9位数字不能重复),而给出的程序却只能输出有重复的组合。
    下面是我给出的修正。
    void func(char *num, int n) //输出1~n的所有排列(n 9) {
    		printf("n must be greater than 0 and no more than 9。
      \n"); return; } len = strlen(num); for (i = 1; i <= n; i++) { itoa(i, &ch, 10); for (j = 0; j < len; j++) { if (ch == num[j]) break; } if (j < len) continue; strcat(num, &ch); func(num, n); //递归调用 num[len] = 0; } if (n == len) printf("%s\n", num); } void main() { char a[10]={0}; func(a,9); } 。
      

    b***

    2004-11-23 17:15:58

其他答案

    2004-11-21 11:46:51
  • 简单地用9层循环即可,下面用的是递归输出M个数字的排列:
    #define M 3
    func(char *beforeNumber, int n) {
        int i;
        char *tmp;
        if (n==1) {
    	for (i=1;i 1) {
    	for (i=1;i<=M;i++) {
    	    itoa(i,tmp,10);
    	    strcat(beforeNumber,tmp);
    	    func(beforeNumber, n-1);
    	    beforeNumber[strlen(beforeNumber)-1]=0x00;
    	}
        }
    }
    main()
    {
      clrscr();
      func("", M);
      getch();
    }

    s***

    2004-11-21 11:46:51

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 176-195
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):