标题:学习日记四:全排列(不含重复数)
只看楼主
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
 问题点数:0 回复次数:0 
学习日记四:全排列(不含重复数)
忽然想起以前在书上看到的全排列问题,当时只看了方法,不知道怎么写代码,
今天试写,练习递归

1,2,3,4全排列
step1:将2,3,4与1分别交换,并作后三位的全排列(后三位的全排列方法与4位相同)
step2:将3,4分别与2交换,并作后两位的全排列
。。。。
一直这样做直到遇到后面没有数据的4。即将每一项与第一项交换,并作第一项以外的全排列,当然这里的第一项是动态的

定义函数allarray(j,k,a[])功能:对数组a[]进行从j到k的全排列。

程序代码:
#include <stdio.h>


void swap( int j , int k , int a[] )
{
    int temp;

    temp=a[j] ;
    a[j]=a[k] ;
    a[k]=temp ;

}

void AllArray( int j , int k , int a[] )
{
    int i ;
    if(j==k) 
    {    
        for(i=0 ; i<=k ; i++) 
            printf( "%d",a[i] ); 
        printf("\n");
    }
    else
    {
        for(i=j ; i<=k ; i++)
        {
            swap( i , j , a ) ;
            AllArray( j+1 , k , a ) ;
            swap( i , j , a ) ;
        }    
    }

}


void main()
{
    int a[10]={0} ;
    int N ;
    int i ;

    scanf( "%d",&N );

    for(i=0 ; i<N ;i++)
        scanf( "%d",&a[i] );

     AllArray(0,N-1,a) ;

}

搜索更多相关主题的帖子: 日记 动态 
2015-11-06 21:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-458960-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.244264 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved