全排列以及排列组合的输出

来源:互联网 发布:windows键没反应怎么办 编辑:程序博客网 时间:2024/05/17 04:38
#include <stdio.h>#include <stdlib.h>int a[10],book[10],n;//a代表几号盒子装哪个数字,n代表多少个数字,book代表这个盒子是否已经被占了int m;//非全排列模式//void dfs(int step)//{//    int i;//    if(step==n+1)//所有盒子已经已经都被占了。//    {//        for(i=1;i<=n;i++)//            printf("%d",a[i]);//输入所有盒子中存在的数字//        printf("\n");//        return;//    }//    for(i=1;i<=n;i++)//    {////        if(book[i]==0)//表示i号扑克在手上//        {//            a[step]=i;//将数字放入盒子//            book[i]=1;//标上被占用标志//            dfs(step+1);//深度遍历//            book[i]=0;//又拿出来了。//        }//    }//    return;//}void dfs(int step){    int i;    if(step==n+1)//所有盒子已经已经都被占了。    {        for(i=1;i<=n;i++)            printf("%d",a[i]);//输入所有盒子中存在的数字        printf("\n");        return;    }    for(i=1;i<=m;i++)    {        if(book[i]==0)//表示i号扑克在手上        {            a[step]=i;//将数字放入盒子            book[i]=1;//标上被占用标志            dfs(step+1);//深度遍历            book[i]=0;//又拿出来了。        }    }    return;}int main(){    scanf("%d",&m);//输入m,代表数字个数    scanf("%d",&n);    dfs(1);    return 0;}

0 0