CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

打印123456789这9个数字的全排序列!

楼主happymoonfy(快乐精灵)2005-04-03 22:03:47 在 C/C++ / C++ 语言 提问

打印123456789这9个数字的全排序列!  
  即把9×8×7×6×5×4×3×2这么多种可能排列情况全打印出来该怎么做?  
  用for和continue的闪! 问题点数:20、回复次数:8Top

1 楼pcboyxhy(-273.15℃)回复于 2005-04-03 22:09:31 得分 5

#include   <stdio.h>  
  #include   <stdlib.h>  
   
  char   used[10]={0};  
  int   number[10]={1,2,3,4,5,6,7,8,9},   len=9,   i,   p[10];  
   
  void   output()  
  {  
          printf("\n");  
          for(i=0;   i<len;   ++i)  
                  printf("%d   ",   number[p[i]]);  
  }  
   
  int   pailie(int   n)  
  {  
          int   ii;  
          if(n==len)  
                  output(   );  
         
          for(ii=0;   ii<len;   ++ii)  
                  if(!used[ii])  
                  {  
                          used[ii]   =   1;  
                          p[n]   =   ii;  
                          pailie(n+1);  
                          used[ii]   =   0;  
                  }  
          return   0;  
  }  
   
  int   main(int   argc,   char   *argv[])  
  {  
          pailie(0);  
          system("PAUSE");  
          return   0;  
  }  
   
  Top

2 楼AtaLoss0202(星空天宇)回复于 2005-04-03 22:14:18 得分 1

可以用while吗?别说连循环都不能用.那这种明显的循环规律性的东西,偶还真不知道还能怎么实现.Top

3 楼net_fogprince(韶华)回复于 2005-04-03 22:20:34 得分 1

用排列的生成算法如:字典序法Top

4 楼heroboy2000(动感超人)回复于 2005-04-04 07:43:20 得分 3

int   num[]={1,2,3,4,5,6,7,8,9};  
  sort(num,num+9);  
  do  
  {  
        print(num);  
  }while(next_permutation(num,num+9));  
   
  使用STL的next_permutation算法Top

5 楼xjp6688(大平/要做必须最好)回复于 2005-04-04 07:44:32 得分 1

www.vcok.comTop

6 楼superspeed2005()回复于 2005-04-04 09:06:08 得分 3

template<class   T>  
  void   fun(   T   a[],   int   l,int   h   )  
  {  
  if   (   a   ==   h   )  
  for(   int   i   =   a;   i   <   h;   i++   )  
    cout   <<   a[   i   ];  
   
  else  
  for   (   int   j   =   l;   j   <   h;   j++   ){  
  swap(   a[   j   ],   a[   l   ]   );  
  fun(   a,   l+1,   h   );  
  swap(   a[   j   ],   a[   l   ]   );  
  Top

7 楼superspeed2005()回复于 2005-04-04 09:07:35 得分 1

}  
  大概这样  
  用递归,数据结构开篇就有。Top

8 楼junguo(junguo)回复于 2005-04-04 09:30:45 得分 5

#include   <iostream>  
  using   namespace   std;  
   
  template<class   T>  
  void   Perm(T   list[],   int   k,   int   m)  
  {   /   /生成list   [k:m   ]的所有排列方式  
  int   i;  
  if   (k   ==   m)   {//输出一个排列方式  
  for   (i   =   0;   i   <=   m;   i++)  
  cout   <<   list   [i];  
  cout   <<   endl;  
  }  
  else   //   list[k:m   ]有多个排列方式  
  //   递归地产生这些排列方式  
  for   (i=k;   i   <=   m;   i++)   {  
  Swap   (list[k],   list[i]);  
  Perm   (list,   k+1,   m);  
  Swap   (list   [k],   list   [i]);  
  }  
  }  
   
  template   <class   T>  
  inline   void   Swap(T&   a,   T&   b)  
  {  
    T   temp   =   a;   a   =   b;   b   =   temp;  
  }  
  int   main()  
  {  
          int   a[]   =   {1,2,3,4,5,6,7,8,9};  
           
          Perm(a,0,8);  
           
          while(1);  
  }Top

相关问题

  • 如何将数字序列自动填零
  • 数字序列填空,能者得分!!!(3, 10, 29, 66, ?)
  • 请教:关于查询数字序列的问题
  • GUID列是否能做为排序列???
  • 请都高手!如何在程序获得默认打印机的序列号?
  • 如何打印下列数字?
  • 蛇形数字方阵 怎么打印???
  • 分行打印问题,文字混排(中、英文、数字)打印在固定的宽度中,谢谢!!在线等,特别急急!有说明
  • 一个数字队列,第一个数字最大,其后数字是散序,求长度最大的降序序列
  • 请问,如何在数组顺序输出时,同时顺序输出一个数字序列?

关键词

  • 打印

得分解答快速导航

  • 帖主:happymoonfy
  • pcboyxhy
  • AtaLoss0202
  • net_fogprince
  • heroboy2000
  • xjp6688
  • superspeed2005
  • superspeed2005
  • junguo

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo