poj 1256 Anagram—next_permutation的神奇应用

  题意:给你一条字符串,让你输出字符串中字符的全排列,输出的顺序要按它给的奇葩的字典序。

  题解:要输出全排列,暴力dfs可以过,但要注意题目的字典序以及相同字符的情况。如果用next_permutation()处理可以简单很多;我是先将字典序"A a B b...Z z"的每个字母赋予一个值,即从1 2 3...52。然后将给的字符串全部转换成对应的数值后,用next_permutation()进行全排列(当然 题目给的字典序有一定规律,所以也可以直接给next_permutation()写个cmp函数直接处理字符串)。

 1 /**
 2 * @author Wixson
 3 */
 4 #include <iostream>
 5 #include <cstdio>
 6 #include <cstring>
 7 #include <cmath>
 8 #include <algorithm>
 9 #include <queue>
10 #include <stack>
11 #include <vector>
12 #include <utility>
13 #include <map>
14 #include <set>
15 const int inf=0x3f3f3f3f;
16 const double PI=acos(-1.0);
17 const double EPS=1e-8;
18 using namespace std;
19 typedef long long ll;
20 typedef pair<int,int> P;
21 
22 char str[20];
23 char book[110];
24 int a[50];
25 void init()
26 {
27     for(int i=0;i<52;i++)
28     {
29         if(i%2) book[i]='a'+i/2;
30         else book[i]='A'+i/2;
31     }
32 }
33 int main()
34 {
35     //freopen("input.txt","r",stdin);
36     init();
37     int t,n;
38     scanf("%d",&t);
39     while(t--)
40     {
41         scanf("%s",str);
42         n=strlen(str);
43         for(int i=0;i<n;i++)
44         {
45             if(str[i]>='A'&&str[i]<='Z') a[i]=(str[i]-'A')*2;
46             else a[i]=(str[i]-'a')*2+1;
47         }
48         //
49         sort(a,a+n);
50         do
51         {
52             for(int i=0;i<n;i++) putchar(book[a[i]]);
53             putchar('\n');
54 
55         }while(next_permutation(a,a+n));
56     }
57     return 0;
58 }

 

转载于:https://www.cnblogs.com/geek1116/p/6408049.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【pyqt5学习】—— 滑动条Qslider、计数器QSpinBox学习

目录 1、滑动条QSlider 1)常用属性 2&#xff09;实例——利用滑动条来实现字体大小的修改 ​编辑 2、计数器QSpinBox 1&#xff09;属性方法 2&#xff09;实例 1、滑动条QSlider 1)常用属性 self.slider QSlider(Qt.Horizontal)# 设置最小值self.slider.setMinimum(2)…

shell常用命令之curl: -w,–write-out参数详解

顾名思义&#xff0c;write-out的作用就是输出点什么。curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出。 输出格式由普通字符串和任意数量的变量组成&#xff0c;输出变量需要按照%{variable_name}的格式&#xff0c;如果需要输出%&#xff0c;double一…

Val编程-速度因子

机械手臂在一个三个基本指令&#xff08;movel,movej,movec&#xff09;指令中有下面基本参数进行配置。 1. Frame toolField; Tcp的值2. Frame frameField;用户坐标系的值3. MoveType absRelField;绝对运动与相对运动4. Config configField;姿态5. BlendType blendTypeField;倒…

Node.js学习之路24——Express框架的app对象

1.express() 基于Node.js平台&#xff0c;快速、开放、极简的web开发框架。创建一个Express应用.express()是一个由express模块导出的入口top-level函数.const express require(express); let app express(); 1.1 静态资源管理 express.static(root, [options]) express.stat…

【pyqt5学习】——对话框QDialog学习(QMessageBox、QColorDialog、QFIleDialog、QFontDialog、QInputDialog)

目录 1、对话框QDialog类别 2、通用对话框 ​编辑 3、消息对话框QMessageBox() 1&#xff09;消息对话框QMessageBox类型 2&#xff09;案例 ​编辑 4、输入对话框QInputDialog 1) 类型 2&#xff09;案例 5、字体格式对话框QFontDialog 6、颜色对话框QColorDialog 1&…

使用 Mesos 管理虚拟机

摘要 为了满足渲染、基因测序等计算密集型服务的需求&#xff0c;UCloud 推出了“计算工厂”产品&#xff0c;让用户可以快速创建大量的计算资源&#xff08;虚拟机&#xff09;。该产品的背后&#xff0c;是一套基于 Mesos 的计算资源管理系统。本文简要介绍该系统的结构、Mes…

Swift数据类型_整型和浮点型

//swift中的整型和浮点型/***//类型推断整数是Int 浮点数是Double ,日常使用需要注意不能越界,存储时间毫秒数 英雄经验数等等之类内容容易越界整型大多数情况下&#xff0c;你不需要在代码中指定哪种整型。Swift提供了一种额外的整型&#xff0c;Int类型Java中的long型&#x…

Val编程-套接字

套接字的介绍&#xff1a;http://zh.wikipedia.org/wiki/Berkeley%E5%A5%97%E6%8E%A5%E5%AD%97 主要分为客户端和服务器。客户端一般是需要主动去链接&#xff0c;需要配置服务器的IP和端口。服务器是被动响应&#xff0c;需要打开相应的端口。端口一般不推荐使用系统端口和常用…

【pyqt5学习】——Qpainter控件学习(文本、图像、各种图形)

目录 1、作用及应用步骤 2、绘制文本drawText() 3、像素级别绘制点&#xff08;正弦曲线为例&#xff09; 4、绘制不同样式的直线 5、绘制弧形、圆形、扇形、图像等 6、画刷填充区域QBrush 1、作用及应用步骤 QPainter是一个用于绘制的类&#xff0c;该类可以用于绘制&…

反向代理与Real-IP和X-Forwarded-For(转)

如下图所示&#xff0c;客户端通过Nginx Proxy1 和 Nginx Proxy2 两层反向代理才访问到具体服务Nginx Backend&#xff08;或如Tomcat服务&#xff09;。那Nginx Backend如何才能拿到真实客户端IP呢&#xff1f; 接下来我们来看看如何才能获取到客户端真实IP。 场景1  场景1是…

Android studio打开之后 cannot load project: java.lang.NUllpointerException

参考来源&#xff1a;http://bbs.csdn.net/topics/391014393 关闭网络&#xff0c;重新打开Android studio就好了。&#xff08;但是原因不清楚是为什么&#xff1f;&#xff09; Internal error. Please report to http://code.google.com/p/android/issuescom.intellij.ide.p…

Val编程-任务编程

不同任务之间可以通过一个标志符来实现互斥事件。 程序代码&#xff1a; Task2 <span style"font-size:12px;">beginwhile truewait(bTaskFlag)cls()gotoxy(1,1)put("这是Task2")gotoxy(1,2)if bTaskFlagput("BFlag:true ")elseput(&…

【pyqt5学习】——拖拽功能(DragDrop)、剪切板(QApplication.clipboard)

目录 1、拖拽功能&#xff08;Drag&Drop&#xff09; 2、剪切板&#xff08;QApplication.clipboard&#xff09; 1、拖拽功能&#xff08;Drag&Drop&#xff09; 选择文本输入框中的文本&#xff0c;移动到下拉框中自动添加步骤&#xff1a; 1、将文本输入框设置为可…

oracle12c之 控制pdb中sga 与 pga 内存使用

Memory Management using Resource Manager Oracle数据库资源管理器(资源管理器)现在可以在多租户容器数据库(CDB)中管理可插入数据库(PDBs)之间的内存使用。这一特性有助于在CDB中维护所有PDBs的性能&#xff0c;确保所有的PDBs都不会占用更多资源&#xff0c;从而导致其他PDB…

[LeetCode] 21. Merge Two Sorted Lists ☆

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 解法&#xff1a; 新建一个链表&#xff0c;依次比较两个链表的头元素&#xff0c;把较小的移到新链表中&#xff0c;直到有…

Val编程-特殊函数使用

Waitendmove()和$Waitendmove()使用心得 这是两个部分&#xff0c;程序运行部分和运动堆栈部分&#xff0c;waitendmove是两个部分进行交互的一个函数。 一般情况下waitendmove()速度会降到0&#xff0c;相当于blend等于off. 代码&#xff1a; begincls()userPage()title("…

Redis的五种数据结构

Redis支持持久化只是它的一件武器&#xff0c;它提供了多达5种数据存储方式&#xff1a; 一 string&#xff08;字符串&#xff09; string是最简单的类型&#xff0c;你可以理解成与Memcached一模一样的类型&#xff0c;一个key对应一个value&#xff0c;其上支持的操作与Mem…

【pyqt5学习】——QDateTimeEdit控件学习

目录 1、同时显示日期时间QDateTime 2、只显示日期QDate 3、只显示时间QTime 4、设置显示的格式setDisplayFormat 5、 QDateTimeEdit常用信号 6、实例 1、同时显示日期时间QDateTime # 同时显示日期时间dateTimeEdit1 QDateTimeEdit()dateTimeEdit2 QDateTimeEdit(QDat…

复选框做成单选效果

function zlClick($id){ var eles document.getElementById($id).children; var srcEle event.srcElement; for(var i0;i<eles.length;i){ if(srcEle.checked){ if(eles[i].value!srcEle.value){ eles[i].checkedfalse; } } } } 技术领域可信计算 其他 申请日 200020012…

013. MVC5过滤器

微软提供了4中过滤器: 1.Action过滤器: 在Action方法执行之前和Action方法执行之后, 会执行此过滤器中的代码. 比如在执行public ActionResult Index()方法之前或之后; 也可以说是在方法执行前或执行后; 接口: IactionFilter 抽象类名: ActionFilterAttribute 添加一个实现…