//#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#define N_MAX 14
#define M_MAX 58
int T;
int len;
char buf[N_MAX];
int ret[N_MAX];
int aa[M_MAX]; //字符=>数字的映射
int bb[M_MAX]; //数字=>字符的映射
char *in = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; void init() // 映射
{
int len = strlen(in);
int val = 0;
for (int i = 0; i < len; i++) {
int idx = in[i] - 'A';
bb[val] = in[i];
aa[idx] = val++;
}
} void qsort(int *a, int begin, int end)
{
if (begin >= end) return;
int l = begin, r = end, k = a[l];
while (l < r) {
while (l < r && k <= a[r]) r--;
while (l < r && k >= a[l]) l++;
if (l < r) {
int tmp = a[l];
a[l] = a[r];
a[r] = tmp;
}
}
a[begin] = a[l];
a[l] = k;
qsort(a, begin, l - 1);
qsort(a, l + 1, end);
} void to_ret()
{
for (int i = 0; i < len; i++) {
int idx = buf[i] - 'A';
ret[i] = aa[idx];
//printf("%d\n", ret[i]);
} qsort(ret, 0, len - 1);
} void print_ret()
{
for (int i = 0; i < len; i++) {
printf("%d", ret[i]);
}
printf("\n");
} void print_()
{
for (int i = 0; i < len; i++) {
int idx = ret[i];
printf("%c", bb[idx]);
}
printf("\n");
} int main(int argc, char* argv[])
{
//setbuf(stdout, NULL);
//freopen("sample_input.txt", "r", stdin); int T = 0;
scanf("%d", &T);
init();
while (T--) {
memset(buf, 0, sizeof(char) * N_MAX);
memset(ret, 0, sizeof(char) * N_MAX);
scanf("%s", buf);
//printf("buf = %s\n", buf); len = strlen(buf); to_ret(); print_(); while (1)
{
int i = len - 1;
for (; i >= 0; i--) {
if (ret[i] > ret[i - 1]) {
break;
}
} if (i == 0) {
break;
} int min = 'z';
int l = i - 1;
int r = i;
for (int j = i; j < len; j++) {
if (ret[j] > ret[l] && ret[j] < min) {
min = ret[j];
r = j;
}
} int tmp = ret[l];
ret[l] = ret[r];
ret[r] = tmp; qsort(ret, i, len - 1);
print_();
}
} return 0;
}

POJ 1256的更多相关文章

  1. POJ 1256.Anagram

    2015-06-04 问题简述: 输出一串字符的全排列,顺序不同于一般的字母序,而是 A<a<B<b......<Z<z.所以应该重写一个比较函数. 原题链接:http: ...

  2. poj 1256 Anagram(dfs)

    题目链接:http://poj.org/problem?id=1256 思路分析:该题为含有重复元素的全排列问题:由于题目中字符长度较小,采用暴力法解决. 代码如下: #include <ios ...

  3. next_permutation,POJ(1256)

    题目链接:http://poj.org/problem?id=1256 解题报告: 1.sort函数是按照ASC11码排序,而这里是按照 'A'<'a'<'B'<'b'<... ...

  4. 【字母全排列】 poj 1256

    深搜   注意与STL模版的去重函数唯一的区别就是有去重. #include <iostream> #include <cstdio> #include <string. ...

  5. poj 1256 按一定顺序输出全排列(next_permutation)

    Sample Input 3aAbabcacbaSample Output AabAbaaAbabAbAabaAabcacbbacbcacabcbaaabcaacbabacabcaacabacbaba ...

  6. poj 1256 Anagram—next_permutation的神奇应用

    题意:给你一条字符串,让你输出字符串中字符的全排列,输出的顺序要按它给的奇葩的字典序. 题解:要输出全排列,暴力dfs可以过,但要注意题目的字典序以及相同字符的情况.如果用next_permutati ...

  7. POJ 1256:Anagram

    Anagram Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18393 Accepted: 7484 Description ...

  8. POJ 1146:ID Codes

    ID Codes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6281 Accepted: 3769 Description ...

  9. (转)ACM next_permutation函数

    转自 stven_king的博客 这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记  (1) int 类型的next_permuta ...

随机推荐

  1. Python--面向对象初识

    Python基础-初识面向对象 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函 ...

  2. 并发编程之volatile

    用代码描述这么一个场景,在main方法中开启两个线程,其中一个线程t1往list里循环添加元素,另一个线程t2监听list中的size,当size等于5时,t2线程结束,t1线程继续执行,直到循环结束 ...

  3. opencv中imgshow图像显示为灰色

    1.图像数据类型是否正确 2.图像是否存在 3.在imgshow()语句下添加watkey();

  4. windows 下启动运行 jar 包程序

    windows 下 运行 jar 包 java -jar XXX.jar java -server -Xms1024m -Xmx20480m -jar $JAR_NAME.jar windows 后台 ...

  5. Windows 查找txt后缀 文件复制

    Windows 查找文件 并且复制目录 for /f "delims==" %a in ('dir /b /s F:\F\*.TXT')do copy /-y "%a&q ...

  6. cmd切换代码页,切换字体,cmd不能输入中文

    cmd终端切换编码:437:美国英语.936:中文gbk编码.65001:UTF8 小知识: 如果cmd不能调用中文输入法,也就是不能输入中文,是因为目前激活的代码页不是936 使用 chcp 936 ...

  7. git下载/上传文件提示:git did not exit cleanly

    问题:git操作下载/上传文件,提示信息如下 TortoiseGit-git did not exit cleanly (exit code 1) TortoiseGit-git did not ex ...

  8. Selenium-Switch--切换浏览器tab/iframe/alart

    Switch 我们在UI自动化测试时,总会出现新建一个tab页面.弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了.需要用到Se ...

  9. 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...

  10. United States Department of Agriculture 美国农业部网站数据自动下载小脚本

    帮对象写的自动点击页面的小脚本,如果有需要的可以试试,(#^.^#) https://apps.fas.usda.gov/gats/ExpressQuery1.aspx var year = '199 ...