所有的排列,但是要不重复

#include<stdio.h>
#include<iostream>
#include<sstream>
#include<queue>
#include<map>
#include<memory.h>
#include <math.h>
#include<time.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
#define N 12
int vis[N];
char a[N];
char b[N];
int length;
int n;
int final = 0;
void dfs(int cur)
{
if(cur == length)
{
for(int i = 0; i < cur; i++)
cout << b[i];
cout << endl;
return;
}
for(int i = 0; i < length; i++)
{
if(!i || a[i] != a[i - 1])
{
int c1 = 0, c2 = 0;
for(int j = 0; j < cur; j++)
if(b[j] == a[i])
c1++; for(int j = 0; j < length; j++)
if(a[j] == a[i])
c2++;
if(c1 < c2)
{
b[cur] = a[i];
dfs(cur + 1);
}
} }
}
void sort()
{
for(int i = 0; i < length; i++)
{
for(int j = 1; j < length - i; j++)
{
if(a[j] < a[j - 1])
{
char cc = a[j];
a[j] = a[j - 1];
a[j - 1] = cc;
}
}
} }
int main(const int argc, char** argv)
{
freopen("d:\\1.txt", "r", stdin);
cin >> n;
while (n--)
{
memset(a, 0, sizeof(a));
scanf("%s", a);
length = strlen(a);
sort();
dfs(0);
//if(n != 0)
cout << endl;
}
return 0;
}

  

#include<stdio.h>
#include<iostream>
#include<sstream>
#include<queue>
#include<map>
#include<memory.h>
#include <math.h>
#include<time.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
#define N 12
int vis[N];
char a[N];
char b[N];
int length;
int n;
int final = 0;
void dfs(int cur)
{
if(cur == length)
{
for(int i = 0; i < cur; i++)
cout << b[i];
cout << endl;
return;
}
for(int i = 0; i < length; i++)
{
if(!i || a[i] != a[i - 1])
{
int c1 = 0, c2 = 0;
for(int j = 0; j < cur; j++)
if(b[j] == a[i])
c1++; for(int j = 0; j < length; j++)
if(a[j] == a[i])
c2++;
if(c1 < c2)
{
b[cur] = a[i];
dfs(cur + 1);
}
} }
}
void sort()
{
for(int i = 0; i < length; i++)
{
for(int j = 1; j < length - i; j++)
{
if(a[j] < a[j - 1])
{
char cc = a[j];
a[j] = a[j - 1];
a[j - 1] = cc;
}
}
} }
int main(const int argc, char** argv)
{
freopen("d:\\1.txt", "r", stdin);
cin >> n;
while (n--)
{
memset(a, 0, sizeof(a));
scanf("%s", a);
length = strlen(a);
sort();
do
{
cout << a << endl;
} while (next_permutation(a, a + length));
cout << endl;
}
return 0;
}

  想看库函数源码了。。。。。

uva-10098的更多相关文章

  1. UVA 10098 Generating Fast, Sorted Permutation

    // 给你字符串 按字典序输出所有排列// 要是每个字母都不同 可以直接dfs ^_^// 用前面说的生成排列算法 也可以直接 stl next_permutation #include <io ...

  2. (组合数学3.1.1.2)UVA 10098 Generating Fast(使用字典序思想产生所有序列)

    /* * UVA_10098.cpp * * Created on: 2013年10月8日 * Author: Administrator */ #include <iostream> # ...

  3. UVa 10098: Generating Fast

    这道题要求按字典序生成字符串的全排列,不可重复(但字符可以重复,且区分大小写). 基本思路是先对输入的字符串按字典序排序,然后从第一位开始递归,从所有输入的字符中选出一个填充,然后再选第二位..... ...

  4. UVA - 10098 - Generating Fast (枚举排列)

    思路:生成全排列,用next_permutation.注意生成之前先对那个字符数组排序. AC代码: #include <cstdio> #include <cstring> ...

  5. uva 10098 Generating Fast(全排列)

    还是用的两种方法,递归和STL,递归那个是含有反复元素的全排列,这道题我 没有尝试没有反复元素的排列,由于从题目上并没有发现一定是有反复元素的() 贴代码: <span style=" ...

  6. UVA 10098 用字典序思想生成所有排列组合

    题目: Generating permutation has always been an important problem in computer science. In this problem ...

  7. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  8. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  9. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  10. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

随机推荐

  1. 在VM上安装centOS后的网络配置

    花了点时间,研究了下VM上的linux虚拟机的网络配置问题.1.环境主机:winXP SP2,家庭宽带,局域网连到路由器,ip地址为192.168.1.101. 虚拟机:centOS(redhat l ...

  2. 简单介绍Spring的ContextLoaderListener

    在开发Spring的Web项目中,通常我们都会在web.xml中配置一个Spring的核心监听器,就是把Spring的IOC容器纳入Servlet容器中,配置如下: <listener> ...

  3. Codeforces gym101955 A【树形dp】

    LINK 有n个大号和m个小号 然后需要对这些号进行匹配,一个大号最多匹配2个小号 匹配条件是大号和小号构成了前缀关系 字符串长度不超过10 问方案数 思路 因为要构成前缀关系 所以就考虑在trie树 ...

  4. BZOJ4767: 两双手【组合数学+容斥原理】

    Description 老W是个棋艺高超的棋手,他最喜欢的棋子是马,更具体地,他更加喜欢马所行走的方式.老W下棋时觉得无聊,便决定加强马所行走的方式,更具体地,他有两双手,其中一双手能让马从(u,v) ...

  5. 实验吧—隐写术——WP之 欢迎来到地狱

    解压压缩包后出现三个文件.jpg .zip .docx 发现图片打开不显示,用winhex打开发现缺少文件头,将jpg的文件头补上 保存后图片可以打开 是一个百度网盘的链接,注意l和1的区别,网盘里是 ...

  6. OAuth 2.0:Bearer Token、MAC Token区别

    Access Token 类型介绍 介绍两种类型的Access Token:Bearer类型和MAC类型 区别项 Bearer Token MAC Token 1 (优点) 调用简单,不需要对请求进行 ...

  7. java编译需要文件后缀名.java 而运行不需要后缀名.class

    对于java源文件HelloWorld.java编译命令:javac HelloWorld.java运行命令:java HelloWorld 编译需要文件后缀名.java 而运行不需要后缀名.clas ...

  8. 深入理解ASP.NET MVC(4)

    系列目录 DataTokens和Areas机制 到目前为止Route对象只剩下DataTokens属性没有涉及,事实上这个Areas机制的核心. DataTokens实际上也是一个RouteValue ...

  9. golang sizeof 占用空间大小

    C语言中,可以使用sizeof()计算变量或类型占用的内存大小.在Go语言中,也提供了类似的功能, 不过只能查看变量占用空间大小.具体使用举例如下. package main import ( &qu ...

  10. dkh人力资源大数据解决方案整体架构

    大数据技术的应用正在潜移默化改变着我们的日常生活习惯和工作方式,很多看起来有点“不可思议”的事情也渐渐被我们“习以为常”.大数据可能在国内的起步较晚,但我们可能却是对大数据应用最好的了代表了.前些时候 ...