7 POJ 1256 Anagram

给1个字符串包括大小写字符,规定’A'<‘a'<‘B'<‘b'<…<‘Z'<‘z’,求该字符串的全排列。

用裸的dfs+map判重 写了1遍超时了,那种机灵的dfs方法没有怎样看懂。。

最开始用的set+next_permutation,太年轻,也超时了。。。

应用1个next_permutation()函数便可,<algorithm>头文件

注意要先将字符串sort1遍,然后next_permutation()也要把比较函数cmp传进去,原来都不知道可以3个参数的。。

#include<cstdio>
#include<set>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
using namespace std;
char s[20];

bool cmp(char a,char b)
{
if(a>='a'&&a<='z'&&b>='a'&&b<='z') return a<b;
if(a>='A'&&a<='Z'&&b>='A'&&b<='Z') return a<b;
if(abs(a-b)==32) return a<b;
if(a>='A'&&a<='Z') a+=32;
if(b>='A'&&b<='Z') b+=32;
return a<b;
}
int main()
{
int T,len;
scanf("%d",&T);
while(T–)
{
scanf("%s",s);
len=strlen(s);
sort(s,s+len,cmp);
do
{
puts(s);
}while(next_permutation(s,s+len,cmp));
}
return 0;
}

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 7 POJ 1256 Anagram

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡