• 排列算法


    #include <stdio.h>
    #include 
    <time.h>

    void swap(int *a,int *b)
    {
        
    int temp=*a;
        
    *a=*b;
        
    *b=temp;
    }
    /************************************************************************/
    /* 算法:
    R={r1,r2,,rn},Ri=R-{ri};
    n=1,perm(R)=(r)
    n>1,perm(R)=(r1)perm(R1) + (r2)perm(R2) +  + (rn)perm(Rn)
    */
    /************************************************************************/
    void perm(int array[],int k,int m)
    {
        
    if (k==m)
        {
            
    for (int i=0;i<=m;i++)
            {
                printf(
    "%d,",array[i]);
            }
            printf(
    "\n");
        } 
        
    else
        {
            
    /*将array[km]中的每个元素和array[k]交换,再对array[k+1m]的元素进行排列
            
    */
            
    for (int i=k;i<=m;i++)
            {
                swap(
    &array[k],&array[i]);
                perm(array,k
    +1,m);
                swap(
    &array[k],&array[i]);
            }
        }
    }

    int main()
    {
        
    int array[10]={1,2,3,4,5,6,7};
        clock_t start
    =clock();
        perm(array,
    0,6);
        clock_t end
    =clock();

        printf(
    "times:%fs\n",((double)(end-start))/CLOCKS_PER_SEC);
        
    return 0;
    }
  • 相关阅读:
    Drupal 7 中文安装教程
    苹果之硬盘启动安装
    STP详解
    RedHat Install
    Linux密码更改
    win8.1开启虚拟wifi
    跳过安装密钥安装系统
    虚拟机中Linux安装Tools
    桌面虚拟化之XenDesktop7
    桌面虚拟化之部署DDC-5.6
  • 原文地址:https://www.cnblogs.com/hustcat/p/1504038.html
Copyright © 2020-2023  润新知