全排列 next_permutation() 函数的使用
看来看去还是这篇博客比较简洁明了
https://www.cnblogs.com/My-Sunshine/p/4985366.html
顺便给出牛客网的一道题,虽然这道题用dfs写出全排列也能做,题意小心理解,后面给出题目和别人AC代码吧,手动心累。
https://www.nowcoder.com/acm/contest/156/D
这个函数包含在头文件 include <algorithm> 里面
基本格式
do
{ ...
}while(next_permutation(a, a + n));
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = ;
int main()
{
int n;
while(cin >> n && n)
{
int a[MAXN];
for(int i = ;i < n;++i)
cin >> a[i];
// 因为这个 next_permutation() 是按字典序排序结束的,所以要先 sort 排序
// 自己可以试试把 sort 去掉会有什么结果
// 返回值据说是 bool 类型
sort(a, a + n);
do
{
for(int i = ;i < n;++i)
cout << a[i] << " ";
cout << endl;
}while(next_permutation(a, a + n));
}
return ;
}
输入
3
3 2 1
输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
****************************************
把 sort 去掉后
输入
3
3 2 1
输出
3 2 1
******************************************
链接:https://www.nowcoder.com/acm/contest/156/D
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
而咒语的总伤害为所有 'a'... 'i' 的排列造成的伤害值之和,托米能打出多少点的伤害,是否能击败 1317 呢?
输入描述:
一行输入一个字符串 s
输出描述:
一行输出一个数,表示伤害值
输入例子:
aabcdefghi
输出例子:
1
-->
备注:
|s| ≤ 3000
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; char str[]; int main()
{
char ss[]={"abcdefghi"};
scanf("%s",str);
register int ans=;
do{
register int i=,j=;
while(i<&&str[j])
{
if(ss[i]==str[j]){
i++,j++;
}else{
j++;
}
}
if(i==) ans++;
}while(next_permutation(ss,ss+));
printf("%d\n",ans);
return ;
}
全排列 next_permutation() 函数的使用的更多相关文章
- 关于全排列 next_permutation() 函数的用法
这是一个c++函数,包含在头文件<algorithm>里面,下面是基本格式. 1 int a[]; 2 do{ 3 4 }while(next_permutation(a,a+n)); 下 ...
- 全排列 next_permutation() 函数的用法
在头文件<algorithm>里面有如下代码: int a[]; do { } while(next_permutation(a,a+n)); 可产生1~n的全排列有如下代码: #incl ...
- C++中全排列算法函数next_permutation的使用方法
首先,先看对next_permutation函数的解释: http://www.cplusplus.com/reference/algorithm/next_permutation/?kw=next_ ...
- 全排列函数 nyoj 366(next_permutation()函数)
C++ STL中提供了std::next_permutation与std::prev_permutation可以获取数字或者是字符的全排列,其中std::next_permutation提供升序.st ...
- HDOJ 1716 排列2 next_permutation函数
Problem Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数. Input 每组数据占一行,代表四张卡 ...
- POJ-1256 next_permutation函数应用
字典序列: 在字典序中蕴含着一个点,就是大小的问题,谁先出现,谁后出现的问题.譬如a<b<c,出现顺序就是a,b,c. 本题中字符集是所有大小写字母,而题目中规定的谁大谁小已经不是按asc ...
- 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> ...
- 全排列next_permutation()用法和构造函数赋值
全排列next_permutation()用法 在头文件aglorithm里 就是1~n数组的现在的字典序到最大的字典序的依次增加.(最多可以是n!种情况) int a[n]; do{ }while( ...
随机推荐
- 使对象可以像数组一样foreach循环,要求属性必须是私有的(写个类实现Iterator接口)
<?php class Test implements Iterator { ,,,,); public function __construct() { } // 重置,将数组内部指针指向第一 ...
- Python3 使用selenium库登陆知乎并保存cookie为本地文件
Python3 使用selenium库登陆知乎并保存cookie为本地文件 学习使用selenium库模拟登陆知乎,并将cookie保存为本地文件,然后供以后(requests模块)使用,用selen ...
- swing中的分层
swing中的分层 摘自:https://blog.csdn.net/levelmini/article/details/26692205 2014年05月23日 12:42:56 阅读数:1244 ...
- CSS3 grayscale滤镜图片变黑白
1. 使整个页面的图片都变成灰色的,代码如下. html{ font-size: 100%; -webkit-text-size-adjust: none; -ms-text-s ...
- SQL Server 时间类型转换函数
cast ( expression as data_type(length))convert ( data_type (length), expression, style) //如果未指定 leng ...
- Java 并行和并发
并行:指两个或多个事件在同一时刻点进行. 并发:指两个或多个事件在同一时间段进行.
- GTA4下载和玩教程
侠盗猎车4中文版.rar: 但是下载安装之后总是在刚开始开车的时候跳转到人物界面卡在那里无法进行下去,解决办法: 1.新建一个commandline.txt文件复制以下内容进去 -novblank - ...
- .net 序列化 与反序列化 Serializable
序列化:序列化指的是 将对象 通过流的方式 保存为一个文件. 反序列化则是将该文件还原成 对象的过程. 序列化的作用:序列化可以跨语言跨平台 传输数据,将某一对象序列化成通用的文件格式在进行传输. 比 ...
- div高度自适应窗口高度布局
给body和html都设置height:100%:然后子元素用百分比设置高度
- Graphic 完成文字缩放
思路:将文字生成图片,再加载此图片伸缩至需要大小. 首先要获取文字的实际大小.宽度高度,再通过图片缩放就OK了 public static void DrawText() { Font f = , F ...