CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

求高手解释一下算法,关于非递归全排列,小弟没参透!!!!!

楼主aboy85()2006-05-02 16:10:55 在 C/C++ / C++ 语言 提问

算法如下:  
  #include    
  #define   N   5   //定义常量    
   
  int   a[N+1];    
  void   exchange(int&   x);   //函数声明    
  void   swap(int&   a,   int&   b);   //同上    
   
  void   main()    
  {    
    int   i;    
    int   y=1;    
    int   x;    
    for   (i=1;i<=N;i++)    
      a=i;    
    do    
    {    
      cout< ";    
      for   (i=1;i<=N;i++)    
        cout<;    
      cout<    x=0;    
      y++;    
      exchange(x);    
    }while   (x!=0);    
    return   0;    
  }    
   
  void   exchange(int&   x)   //取x的地址作为参数    
  {    
    int   i;    
    int   j;    
    for   (i=1;i<=N-1;i++)   //这里是一直找到最后的元素,不太明白啥意思  
      if   (a[i]<=a[i+1])    
        x=i;    
    if   (x!=0)    
    {    
      for   (i=x;i<=N;i++)    
        if   (a[x]<=a[i])    
          j=i;    
      swap(a[x],a[j]);    
      for   (i=x+1;i<=N;i++)    
      {    
        if   (i!=N+x+1-i)    
          swap(a[i],a[N+x+1-i]);    
        if   ((i+1)*2>N+x+1)    
          break;    
      }    
    }    
  }    
   
  void   swap   (int&   a,   int&   b)   //a.b值互换    
  {    
    a=a+b;    
    b=a-b;    
    a=a-b;    
  }    
  就是对整体的算法思想不明白,语句倒是能看懂   ,谢谢 问题点数:10、回复次数:2Top

1 楼djfu(飞龙在天)回复于 2006-05-02 17:18:47 得分 0

你没有贴全啊,有些代码都看不到。Top

2 楼djfu(飞龙在天)回复于 2006-05-02 17:19:53 得分 0

你这个程序编译都通不过。Top

相关问题

关键词

得分解答快速导航

  • 帖主:aboy85

相关链接

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

广告也精彩

反馈

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