全排列 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( ...
随机推荐
- hdu1269 Tarjan强连通分量 模板(转)
#include<stdio.h> #include<iostream> #include<vector> using namespace std; ; vecto ...
- T-SQL解析json字符串函数
T-SQL解析json字符串函数及其使用示例 参考博文:http://www.cnblogs.com/huangtailang/p/4277809.html 1.解析json字符串函数,返回表变量 A ...
- CentOS6.5 Eclipse C++ 版本 OpenCV
最近在搞Linux上用Eclipse(C++版本)开发 OpenCV,配环境配的那真是配到天昏地暗,不知所措,好在配成功了,期间参考了大量的帖子,所以,特立此贴,希望能给后来人一些小建议! 1.Cen ...
- WCF把书读薄(3)——数据契约、消息契约与错误契约
上一篇:WCF把书读薄(2)——消息交换.服务实例.会话与并发 十二.数据契约 在实际应用当中数据不可能仅仅是以int Add(int num1, int num2)这种简单的几个int的方式进行传输 ...
- HTML5移动应用开发入门经典 中文pdf扫描版
HTML5是关注度ZUI高的前沿Web技术,而移动互联网则是近两年ZUI炙手可热的Web领域.<HTML5移动应用开发入门经典>将这两者巧妙结合起来,详细讲解了如何利用HTML5进行移动应 ...
- Sublime Text 2插件推荐
必装Package Control 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: import urllib2,os; pf='Package ...
- 引用母版页的内容页添加CSS文件
在内容页当中定义一个类然后调用内中的方法即可 public static class addstyle{ //可以不用实例化 public static void addstylesheet(Pag ...
- [.net 多线程 ]ReaderWriterLock
ReaderWriterLock 用于同步对资源的访问.在任一特定时刻,它允许多个线程同时进行读访问,或者允许单个线程进行写访问.在资源不经常发生更改的情况下,ReaderWriterLock 所提供 ...
- pdo 预处理
<?php /* * pdo 预处理sql */ $dsn = "mysql:dbname=0328;host=localhost"; $username = " ...
- JSON Assertion(JSON断言)
JSON断言允许你完成对JSON文档的校验,首先,如果如果数据不是JSON,则会解析失败:其次,JMeter会用指定语法寻找指定的path,如果没有找到,则会失败:第三,如果验证期望值为null,JM ...