您的位置:首页 > 其它

POJ-1256(permutation)

2011-08-16 04:53 197 查看
1256:Anagram

查看

提交

统计

提问

时间限制:

1000ms

内存限制:

65536kB

描述

You are to write a
program that has to generate all possible words from a given set of letters.

Example: Given the word "abc", your program should - by exploring all
different combination of the three letters - output the words "abc",
"acb", "bac", "bca", "cab" and
"cba".

In the word taken from the input file, some letters may appear more than once. For a given word, your program should not produce the same word more than once, and the words should be output in alphabetically ascending order.

输入

The input consists
of several words. The first line contains a number giving the number of words
to follow. Each following line contains one word. A word consists of uppercase
or lowercase letters from A to Z. Uppercase and lowercase letters are to be considered
different. The length of each word is less than 13.

输出

For each word in
the input, the output should contain all different words that can be generated
with the letters of the given word. The words generated from the same input
word should be output in alphabetically ascending order. An upper case letter
goes before the corresponding lower case letter.

样例输入

3

aAb

abc

acba

样例输出

Aab

Aba

aAb

abA

bAa

baA

abc

acb

bac

bca

cab

cba

aabc

aacb

abac

abca

acab

acba

baac

baca

bcaa

caab

caba

cbaa

查看

提交

统计

提问

#include"iostream"
#include"cstring"
#include"algorithm"
using namespace std;
int help(char x)//需要自己定义help函数帮助实现大小字母如A,a,B,b.....的排序
{
if(x>='a' && x<='z') return (x-'a')*2+2;
else return (x-'A')*2+1;
}
bool comp(char x, char y)
{
return help(x)<help(y);
}
int main()
{
int num;
cin>>num;
char test[13];
int len;
while(num--)
{
cin>>test;
len=strlen(test);
sort(test,test+len,comp);
do
{
cout<<test<<endl;
}while(next_permutation(test,test+len,comp));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: