POJ-1256 next_permutation函数应用
字典序列:
在字典序中蕴含着一个点,就是大小的问题,谁先出现,谁后出现的问题。譬如a<b<c,出现顺序就是a,b,c。
本题中字符集是所有大小写字母,而题目中规定的谁大谁小已经不是按ascii码排了,而是A<a<B<b<C<c……,那么不管在排序的时候还是调用next_permutation中我们都需要指明cmp这个比较大小的函数。
1:sort(data, data+length, cmp)
2:next_permutation(data, data+length, cmp)
注意cmp函数说简单点就是指明什么叫“小于”的关系。
主要是next_permutation函数自定义排序的简单例子,与sort函数排序一样
题目链接:poj.1256题
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;
bool cmp( char a, char b)
{
if(a <= 'Z' && a >= 'A' && b <= 'Z' && b >= 'A')
return a < b;
if(a <= 'z' && a >= 'a' && b <= 'z' && b >= 'a')
return a < b;
if(a <= 'Z' && a >= 'A' && b <= 'z' && b >= 'a')
return a + 32 <= b;
if(a<='z' && a >='a' && b <= 'Z' && b >= 'A')
return a < (b + 32);
}
int main()
{ int n;
cin>>n;
while(n--)
{
char aa[120];
cin>>aa;
int a=strlen(aa);
sort(aa,aa+a,cmp);
cout<<aa<<endl;
while(next_permutation(aa,aa+a,cmp))
{
cout<<aa<<endl; } }
return 0;
}
POJ-1256 next_permutation函数应用的更多相关文章
- (转)ACM next_permutation函数
转自 stven_king的博客 这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记 (1) int 类型的next_permuta ...
- next_permutation函数
这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记 与之完全相反的函数还有prev_permutation (1) int 类 ...
- POJ 1256.Anagram
2015-06-04 问题简述: 输出一串字符的全排列,顺序不同于一般的字母序,而是 A<a<B<b......<Z<z.所以应该重写一个比较函数. 原题链接:http: ...
- c++中STL中的next_permutation函数基本用法
对于next_permutation函数是针对于排列组合问题的库函数,它的排序方式是按照字典的方式排列的·: 如以下代码对于next_permutation函数的初步解释: #include<c ...
- hdu 1027 Ignatius and the Princess II(产生第m大的排列,next_permutation函数)
题意:产生第m大的排列 思路:使用 next_permutation函数(头文件algorithm) #include<iostream> #include<stdio.h> ...
- 全排列函数 nyoj 366(next_permutation()函数)
C++ STL中提供了std::next_permutation与std::prev_permutation可以获取数字或者是字符的全排列,其中std::next_permutation提供升序.st ...
- next_permutation,POJ(1256)
题目链接:http://poj.org/problem?id=1256 解题报告: 1.sort函数是按照ASC11码排序,而这里是按照 'A'<'a'<'B'<'b'<... ...
- poj 1256 Anagram—next_permutation的神奇应用
题意:给你一条字符串,让你输出字符串中字符的全排列,输出的顺序要按它给的奇葩的字典序. 题解:要输出全排列,暴力dfs可以过,但要注意题目的字典序以及相同字符的情况.如果用next_permutati ...
- poj 1256 按一定顺序输出全排列(next_permutation)
Sample Input 3aAbabcacbaSample Output AabAbaaAbabAbAabaAabcacbbacbcacabcbaaabcaacbabacabcaacabacbaba ...
随机推荐
- 一句Python,一句R︱数据的合并、分组、排序、翻转
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. python中的numpy模块相当于R中的matirx矩 ...
- 用JavaScript搭建高性能App - React Native实战教程
直接上网址: http://gold.xitu.io/entry/5697a52160b2f5adfd5ea0f2/view http://gold.xitu.io/entry/5698908d9d2 ...
- 常用YUV转RGB代码
常用YUV转RGB [java] view plaincopyprint? public class YuvToRGB { private static int R = 0; private stat ...
- 中断处理程序不能使用printf的本质
vxworks 中断处理程序之所以不用printf,本质在于printf是将信息输出到标准输出设备(STDOUT)中, 整个标准输出设备是一个全局变量,由于有semTake操作,那么就会发生阻塞,vx ...
- B2C经典查询,统计 绝对用的上,根据日期分组统计当天各种支付方式的销售数量和销售额
declare @sql varchar(8000) set @sql = 'select CONVERT(varchar(10), OrderDate, 120) as 日期' select @sq ...
- 初识 systemd
从 init 系统说起 linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化.内核初始化的最后一步就是启动 PID ...
- CF368 E - Garlands
主席树 其实暴力二维树状还更快 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int M ...
- freemarker定义一个连续的序列(十九)
1.简易说明 定义一个连续的序列,并打印出序列中的元素 2.实现源码 <#--freemarker定义了一个连续的序列--> <#assign nums=1..100/> &l ...
- java SpringWeb 接收安卓android传来的图片集合及其他信息入库存储
公司是做APP的,进公司一年了还是第一次做安卓的接口 安卓是使用OkGo.post("").addFileParams("key",File); 通过这种方式传 ...
- 最新的 iOS 申请证书与发布流程
申请流程. 1. 申请钥匙串文件 进入 (Launchpad),找到 (我的是在其他里面找到的),运行后再左上角 存储在桌面就好了,然后就完成退出钥匙串工具就可以了. 2.申请开发证书,发布证书 ...