【字母全排列】 poj 1256
深搜 注意与STL模版的去重函数唯一的区别就是有去重。
#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
int len;
],ss[];
];
bool cmp(char a,char b)
{
double t1=a,t2=b;
if(a>='A'&&a<='Z') t1+=31.5; //神来之笔,对于cmp的神级处理
if(t2>='A'&&t2<='Z') t2+=31.5;
return t1<t2;
}
void dfs(int x)
{
if(x==len)
{
;i<len;++i)
printf("%c",ch[i]);
printf("\n");
}
else
{
;i<len;i++) //以任意顺序开头
{
if(!visted[i])
{
ch[x]=ss[i];
visted[i]=;
dfs(x+);
visted[i]=; //另一进程需要更新dfs之前的值
<len&&ss[i+]==ss[i])i++; //去重
}
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
int cas;
scanf("%d",&cas);
while(cas--)
{
memset(visted,,sizeof(visted));
scanf("%s",ss);
len=strlen(ss);
sort(ss,ss+len,cmp);
dfs();
}
;
}
网上看到的一段代码:
用的是STL的库函数next_permutation全排列
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool cmp(char a,char b)
{
if(tolower(a)==tolower(b))
return a<b;
else
return tolower(a)<tolower(b);
}
int main()
{
int t;
cin>>t;
while(t--)
{
string str;
cin>>str;
sort(str.begin(),str.end(),cmp);
do
{
cout<<str<<endl;
}
while(next_permutation(str.begin(),str.end(),cmp));
}
;
}
【字母全排列】 poj 1256的更多相关文章
- poj 1256 按一定顺序输出全排列(next_permutation)
Sample Input 3aAbabcacbaSample Output AabAbaaAbabAbAabaAabcacbbacbcacabcbaaabcaacbabacabcaacabacbaba ...
- POJ 1256.Anagram
2015-06-04 问题简述: 输出一串字符的全排列,顺序不同于一般的字母序,而是 A<a<B<b......<Z<z.所以应该重写一个比较函数. 原题链接:http: ...
- poj 1256 Anagram(dfs)
题目链接:http://poj.org/problem?id=1256 思路分析:该题为含有重复元素的全排列问题:由于题目中字符长度较小,采用暴力法解决. 代码如下: #include <ios ...
- 简单的字母全排列问题—递归法和STL法
问题描述:求全由小写字母组成的不超过200个字符序列的全排列 如输入序列bbjd,排列结果为: bbdj bbjd bdbj bdjb bjbd bjdb dbbj dbjb djbb jbbd jb ...
- next_permutation,POJ(1256)
题目链接:http://poj.org/problem?id=1256 解题报告: 1.sort函数是按照ASC11码排序,而这里是按照 'A'<'a'<'B'<'b'<... ...
- poj 1256 Anagram—next_permutation的神奇应用
题意:给你一条字符串,让你输出字符串中字符的全排列,输出的顺序要按它给的奇葩的字典序. 题解:要输出全排列,暴力dfs可以过,但要注意题目的字典序以及相同字符的情况.如果用next_permutati ...
- POJ 1256:Anagram
Anagram Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18393 Accepted: 7484 Description ...
- WLLCM这五个字母全排列数目
经过训练的话一眼看出来是5!/2!:我想的是先排WLCM那么是4!,5个位置,由于L左右两边的位置其实是一样的(再插入的还是L),索以结果是4*4!,这样重复了,看下图. ...
- POJ 1256
//#include "stdafx.h" #include <stdio.h> #include <string.h> #define N_MAX 14 ...
随机推荐
- CascadeType
当Hibernate配置了(JPA注解) cascade = { CascadeType.PERSIST, CascadeType.MERGE } 调用保存时 session.save(user); ...
- 浙江大学Pat 1036 题解
1036. Boys vs Girls (25) This time you are asked to tell the difference between the lowest grade of ...
- 消息同步调用-- ESFramework 4.0 进阶(07)
分布式系统的构建一般有两种模式,一是基于消息(如Tcp,http等),一是基于方法调用(如RPC.WebService.Remoting).深入想一想,它们其实是一回事.如果你了解过.NET的Prox ...
- OMCS开发手册(03) -- 多媒体服务器
前面我们已经详细介绍了基于OMCS开发网络多媒体应用的客户端程序所必需掌握的内容,现在我们来看一下OMCS服务端的开发.对于使用者而言,OMCS的服务端就非常简单了,只要实现一个用户验证的接口,挂接到 ...
- ashx入侵
<%@ WebHandler Language="C#" Class="TextLd" %>using System;using System.Co ...
- spring之json数据的接受和发送
配置spring对json的注解方式. <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springf ...
- Git 忽略特殊文件的功能
有些时候,你必须把某些文件放到Git工作目录中.但是又不能提交他们,比如保存了数据库密码的配置文件等,每次git status都会 显示“untracked files”,如果有强迫症的你心里肯定不舒 ...
- 2015 ACM/ICPC Asia Regional Hefei Online
1001 Monitor the Alpacas 1002 The Relationship in Club 1003 Difference of Clustering 两边离散化.暴力扫C就过了. ...
- offset()值不准问题
本来应该只需获取含图片的div的offset(),然后将标签div的坐标设置好即可,但是不知为何越靠后的div的offset().top越不正常,跟标准值偏离的越来越大. 即使你在$(document ...
- How can I create an Asynchronous function in Javascript?
哈哈:)我的codepen 的代码笔记是:http://codepen.io/shinewaker/pen/eBwPxJ --------------------------------------- ...