荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bakey (大苹果), 信区: Program
标  题: Re: 问个问题
发信站: 荔园晨风BBS站 (Fri Jul  7 21:26:37 2006), 站内

给个例子你参考一下,输入要排列的个数,输出他们的全排列
# include <stdio.h>
# include <stdlib.h>
const int maxn = 10;
bool used[maxn];
int n,flag[maxn];
int DFS(int d)
{
        int i;
        if(d==n){
                for(i=0;i<n;i++)
                        printf("%d",flag[i]); //得到一个解,输出
                printf("\n");
                return 0;
        }
        for(i=0;i<n;i++)
                if(used[i]==0) {
                        used[i]=1;//设使用位
                        flag[d]=i+1;//输入数据,可以根据自己的需要输入元素
                        DFS(d+1);//递归加深
                        used[i]=0;//回复现场
                }
                return 0;
}
int main()
{
        scanf("%d",&n);
        if (n <= 0) {
                printf("error\n");
                exit(0);
        }
        else
                DFS(0);
        //system("PAUSE");
        return 0;
}


【 在 bakey (大苹果) 的大作中提到: 】
: 递归
: 【 在 John (严以律己,宽以待人) 的大作中提到: 】
: :    比如现在有四个整数
: :    要对它们进行全排列
: :    程序该怎么写比较好?


--
无签名档咖~~~


※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.111.149]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店