全排列

原创 2012年03月29日 13:33:05
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int count = 0;
int perm(char*, int, int);
void Swap(char*, char*);
int judge(char*, int, int);
int main(void)
{
    char str[] = "aacc";
    printf("%d\n", perm(str, 0, strlen(str) - 1));
    return 0;
}
//perm[k, n]的全排列
int perm(char *array, int k, int n)
{
    int i;
    if (k == n)
    {
        ++count;
        printf("%s\n", array);
    }
    else
    {
        for (i = k; i <= n; ++i)
        {
            //如果从k -> (i - 1)有与i相同的就不需要换了
            if (judge(array, i, k))
            {
                Swap(&array[i], &array[k]);
                perm(array, k + 1, n);
                Swap(&array[i], &array[k]);
            }
        }
    }
    return count;
}
//交换两个字符型数据
void Swap(char *a, char *b)
{
    char temp = *a;
    *a = *b;
    *b = temp;
}
//判断从[k, (i - 1)]的元素中有没有与第i个相同的元素
int judge(char *array, int i, int k)
{
    int t;
    if (i > k)
    {
        for (t = k; t < i ; ++t)
        {
            if (array[t] == array[i])
            {
                return 0;
            }
        }
    }
    return 1;
}

Openjudge 2.2 1750:全排列

.
  • C20192419MYS
  • C20192419MYS
  • 2017年04月19日 13:22
  • 544

全排列计算(康托展开)

题目描述 给出一个1~n的全排列中的某一个,求它是按字典序排列的第几个。 输入输出格式 输入格式: 第一行,一个n; 第二行,依次是n个数。 输出格式: ...
  • update7
  • update7
  • 2017年02月23日 21:38
  • 15736

全排列的一些总结

今天做了一道网易的笔试题——数列还原。里面用到了全排列的想法,因此学习并总结了一下全排列算法。 1、全排列问题描述        输入一个字符串或者序列,打印出该字符串或序列中字符或元素的所有排列。例...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016年08月09日 17:32
  • 3438

输出全排列(递归&非递归)

递归算法: 假设总共有n个元素,其核心是:将每个元素放到余下n-1个元素组成的队列最前方,然后对剩余元素进行全排列,依次递归下去。 比如:1 2 3 首先将1放到最前方(跟第1个元素交换),然后...
  • prstaxy
  • prstaxy
  • 2012年11月04日 22:59
  • 7692

全排列和去重全排列---递归实现

一、全排列的概念: 根据360百科,我们知道从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。二、全排列的...
  • fern_girl
  • fern_girl
  • 2017年04月21日 22:13
  • 743

全排列 DFS实现

/* DFS实现全排列 递归是我的弱项 分析递归过程分析的头都大了。。。 做一下注释 免得日后想不起来 运行时注意: 输入数字最好不要超过两位数 输入10时运行时间近1min 产生的output.t...
  • Jack_Wong2010
  • Jack_Wong2010
  • 2011年08月22日 13:17
  • 3873

c++ STL中的全排列函数

头文件: #include 函数原型: bool next_permutation(iterator start, iterator end); next_permutation函数的返回值是布尔...
  • xiaoquantouer
  • xiaoquantouer
  • 2016年12月05日 23:11
  • 1091

全排列(递归和字典序)

递归法: #include #define maxn 100 int d[maxn]; void swap(int *a, int *b) //交换 { int t; t = *a; *a...
  • simatongming
  • simatongming
  • 2015年12月16日 04:03
  • 1705

全排列的递归算法(包括字典序输出和非字典序输出)

第一种:(字典序) #include #include #include int a[10],p[10],vis[10];//标记为1则说明已固定 int n; void digui(int l...
  • xdz78
  • xdz78
  • 2015年05月16日 17:47
  • 2331

包含重复元素的全排列

#include #include #include using namespace std; int n = 0;//统计全排列个数 ofstream out("output.txt"); //...
  • cq340321
  • cq340321
  • 2016年11月21日 21:15
  • 324
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:全排列
举报原因:
原因补充:

(最多只允许输入30个字)