首页 > 其他分享 >【POJ 1256】Anagram 题解(全排列)

【POJ 1256】Anagram 题解(全排列)

时间:2023-11-02 20:00:49浏览次数:53  
标签:单词 abc 小写字母 题解 字母 len 1256 给定 Anagram

描述 你要编写一个程序,从一组给定的字母中生成所有可能的单词。 示例:给定单词“abc”,您的程序应该-通过探索这三个字母的所有不同组合-输出单词“abc”、“acb”、“bac”、“bca”、“cab”和“cba”。 在输入文件中的单词中,某些字母可能出现多次。对于给定的单词,您的程序不应多次生成相同的单词,并且单词应按字母顺序升序输出。

输入 输入由几个单词组成。第一行包含一个数字,给出要跟随的单词数。以下每行包含一个单词。单词由A到Z的大写或小写字母组成。大写字母和小写字母应视为不同。每个单词的长度小于13。 输出 对于输入中的每个单词,输出应该包含可以用给定单词的字母生成的所有不同单词。从同一输入单词生成的单词应按字母顺序升序输出。大写字母在相应的小写字母之前。

Sample Input

3 aAb abc acba

Sample Output

Aab Aba aAb abA bAa baA abc acb bac bca cab cba aabc aacb abac abca acab acba baac baca bcaa caab caba cbaa Hint

大写字母在相应的小写字母之前。 所以正确的字母顺序是“A”<“A”<“B”<“B”<…<”Z'<'Z'。 来源 1995年西南欧洲地区比赛

思路

'A'<'a'<'B'<'b'<…<'Z'<'z' 如果是同一字母的不同大小写,直接比较。如果是不同字母,则先转换为小写再比较。

AC代码

#include <iostream>
#include <algorithm>
#include <cstring>
#define AUTHOR "HEX9CF"
using namespace std;

//'A'<'a'<'B'<'b'<…<'Z'<'z'
bool cmp(char x, char y)
{
    if (tolower(x) == tolower(y))
    {
        return x < y;
    }
    else
    {
        return tolower(x) < tolower(y);
    }
}

int main()
{
    int n;
    cin >> n;
    while (n--)
    {
        char s[15];
        int len = 0;
        cin >> s;
        len = strlen(s);
        sort(s, s + len, cmp);
        do
        {
            cout << s << endl;
        } while (next_permutation(s, s + len, cmp));
    }
    return 0;
}

标签:单词,abc,小写字母,题解,字母,len,1256,给定,Anagram
From: https://blog.51cto.com/HEX9CF/8154502

相关文章

  • CF1868B2 Candy Party (Hard Version) 题解
    Problem-1868B2-CodeforcesCandyParty(HardVersion)-洛谷相信大家已经看过SimpleVersion,这题和上题不同之处就在于如果\(b_i=2^x\),他可以被分解成\(2^x\)或\(2^{x+1}-2^x\),我们不妨起初固定一种方案,如果不满足条件后再把一部分换回去。我们强制钦定起......
  • CF227A Where do I Turn? 题解
    题目大意:\(A\),\(B\)在一条直线上。\(B\),\(C\)在一条直线上你从\(A\)走到了\(B\)去\(C\),问现在应该是直走、左转、还是右转。思路:分类讨论:分别求\(A\)到\(B\),\(B\)到\(C\)是什么方向,然后可得\(A\)到\(C\)的方向。Code:#include<bits/stdc++.h>usingnamesp......
  • CF333B题解
    分析发现只能跳\(n-1\)次,所以每个点一定是畅通无阻地抵达终点,所以有障碍的行和列放不了,并且每一个行或列最多放一个。因为同时跳,思考会不会跳到一起,发现如果不在正中间可以将起点放到另一头就不会跳到一起,如果在正中间就一定会跳到一起,所以正中间的行和列加一起最多只能放......
  • CF333A题解
    分析被除数一定,除数越小,商越大,所以选择合法的最小\(3_{x}\)。枚举指数即可,复杂度\(\mathcal{O(\log_{3}w)}\),\(w\)为值域\(1e18\),可以通过本题。代码#include<iostream>#defineintlonglongusingnamespacestd;constexprintMAXN(1000007);intf[MAXN];int......
  • P9740 「KDOI-06-J」ION 比赛 题解
    题目思路:先计算总分数\(sum\),\(c_i=\frac{100}{a_i}\)为每道题的每个测试点分数。如果总分数达到\(Au\)线,直接输出AlreadyAu.。否则计算到达\(Au\)线还需多少分\(p\),遍历所有题,求出每道题的失分,如果失分大于等于\(p\),则输出\(\lceil\frac{p}{c_i}\rceil\),即至......
  • Educational Codeforces Round 134 (Div.2) D 题解
    题目链接D.MaximumAND题目大意给定两组序列\(a\)\(b\),长度为\(n\),现有一新序列\(c\),长度也为\(n\)。其中,\(c_i=a_i\oplusb_i\)。定义\(f(a,b)=c_1\&c_2\&……\&c_n\)。现在你可以随意编排\(b\)序列的顺序,求\(f(a,b)\)的最大值。思路以下位运算均是......
  • 【python】-bash: /usr/local/bin/pip: /usr/bin/python: bad interpreter: No such f
    安装单独的第三方库时没有问题pipinstallpandas但是一旦使用requirement.txt批量安装第三方库时就会出现-bash:/recorddata/rebuydata/hppy/soft/python3/bin/pip3:/usr/local/source/hppy/soft/python3/bin/python3.6:badinterpreter:没有那个文件或目录badinterpreter......
  • CF1868B1 Candy Party (Easy Version) 题解
    Problem-1868B1-CodeforcesCandyParty(EasyVersion)-洛谷喵喵题。首先每个数最终肯定变成\(\overlinea\),如果\(\overlinea\)不是整数显然无解。然后记\(b_i=a_i-\overlinea\)表示每个数的偏差量,那\(b_i\)要满足能写成\(2^x-2^y\)的形式然后只需要......
  • abc194f O(nk)题解
    前言洛谷唯一的题解似乎是\(O(nk^2)\)的,怎么卡过去的orz这里提供一种与AT官方题解时间复杂度相同的\(O(nk)\)做法。Solution题意很显然,就不解释了。一眼丁真,考虑数位dp。设\(dp_{i,j}\)表示做到第\(i\)位,不同的个数有\(j\)种的方案数。显然有转移方程:\(dp_{i......
  • [ARC159F] Good Division 题解
    [ARC159F]GoodDivision题解首先对于题目要求的划分方式转化一下,转化为划分的每一段都没有绝对众数,可以证明这与题目中的要求是完全等价的,证明如下:充分性:考虑构造一种操作方法,就是每次操作都消去一个出现次数最多的数,按照这样操作可以保证每次操作之后该区间仍然不会出现绝对......