zoukankan      html  css  js  c++  java
  • 置换(用递归的方法执行置换)

    /置换(用递归的方式执行交换)
    #include <stdio.h>
    //利用宏定义swap方法,交换
    #define swap(x,y,t)((t)=(x),(x)=(y),(y)=(t))
    //声明一个函数
    void perm(char *list,int k,int m);
    int count;
    int main(void)
    {
    char list[]="abc";
    perm(list,0,2);
    //置换的次数
    printf("总共有%d中排列方式。 ",count);
    return 0;
    }
    void perm(char *list,int k,int m)
    {
    char temp;
    int i;
    //用于判断
    if(k==m)
    {
    printf("%s ",list);
    count++;
    }
    else
    {
    //用于执行置换
    for(i=k;i<=m;i++)
    {
    //交换位置
    swap(list[i],list[k],temp);
    //置换
    perm(list,k+1,m);
    //每次置换后在恢复原来的位置
    swap(list[i],list[k],temp);

    }
    }
    /**a开头的,后面bc的交换
    perm(list,1,2);
    /b开头的,后面ac的交换
    swap(list[0],list[1],temp);
    perm(list,1,2);
    swap(list[0],list[1],temp);
    /c开头的,后面ab的交换
    swap(list[0],list[2],temp);
    perm(list,1,2);
    swap(list[0],list[2],temp);**/

    }

  • 相关阅读:
    呵呵
    geoserver中WMS服务详细说明
    Linux的用户和用户组管理
    linux ftp配置
    linux下vi命令大全
    linux基本命令大全
    Python ConfigParser
    java 小程序分析:参数传递
    java final
    java静态初始化块(静态域)
  • 原文地址:https://www.cnblogs.com/caocx/p/5996733.html
Copyright © 2011-2022 走看看