首页 > 其他分享 >全排列

全排列

时间:2024-03-23 16:23:26浏览次数:23  
标签:std 排列 const int numbers include

#include <cctype>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
	vector<int> numbers = {1,2,3};
	// 从大到小排序 
	sort(numbers.begin(),numbers.end(),[](const int & a,const int & b){
	return a>b;
	});
	do
	{
		for(auto i:numbers){
			cout << i++ << " ";
		}
		cout << endl;
	}while(prev_permutation(numbers.begin(),numbers.end()));
	
	cout << "-------------------------------------" << endl;
	// 从小到大排序 
	sort(numbers.begin(),numbers.end());
	do
	{
		for(auto i:numbers){
			cout << i++ << " ";
		}
		cout << endl;
	}while(next_permutation(numbers.begin(),numbers.end()));

	return 0;	
}

输出

3 2 1
3 1 2
2 3 1
2 1 3
1 3 2
1 2 3
-------------------------------------
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

标签:std,排列,const,int,numbers,include
From: https://www.cnblogs.com/Mask2024/p/18091254

相关文章

  • 【代码随想录】零钱兑换II(关于组合与排列的区别)
    题目描述分析按动态规划的分析步骤分析的话,代码是不难写出来的,但是写出来后你就会发现,结果不对,多出了很多组合:解决方法:什么都不用改,直接把两个循环调换即可。。代码如下:#include<bits/stdc++.h>usingnamespacestd;intchange(intamount,vector<int>&coins){ i......
  • 算法打卡day25|回溯法篇05|Leetcode 491.递增子序列、46.全排列、47.全排列 II
     算法题Leetcode491.递增子序列题目链接:491.递增子序列大佬视频讲解:递增子序列视频讲解 个人思路和昨天的子集2有点像,但昨天的题是通过排序,再加一个标记数组来达到去重的目的。而本题求自增子序列,是不能对原数组进行排序的,因为排完序的数组都是自增子序列了。解决......
  • DFS进阶——全排列
    通过后续的题目希望大家明白,dfs不仅仅是对图的遍历,他还有很多用法。DFS进阶1——回溯先说一下回溯的板子dfs(){for(......){标记信息dfs()撤销标记}}回溯模板——递归实现排列型枚举题目分析其实就是对1~n的数字全排列,这里就可以用dfs去做,1~n全排......
  • 代码随想录算法训练营day29 | leetcode 491. 非递减子序列、46. 全排列、47. 全排列 I
    目录题目链接:491.非递减子序列-中等题目链接:46.全排列-中等题目链接:47.全排列II-中等题目链接:491.非递减子序列-中等题目描述:给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重......
  • abc291E 寻找唯一排列
    有数组A[n],其元素值正好是1~n的一个排列。现在不知道具体的A,但已知m组条件,对于(x,y),有A[x]<A[y],问根据这m组条件能否唯一确定A,如果可以,输出Yes和A,否则输出No。2<=n,m<=2e5;1<=x[i],y[i]<=n排列唯一有两个等价条件:bfs拓扑排序过程中,队列时刻保持只有1个元素。如果看成dag,最长......
  • 回溯:排列回溯和组合回溯的区别
    在形式上,最明显的问题就是[1,2]和[2,1]这两个list在排列中是正确的,而在组合中一般只有前者排列回溯注重元素的顺序,并且允许重复元素的出现,而组合回溯则不考虑元素的顺序。排列回溯:通常使用一个boolean数组来标记哪些元素已经被选择,哪些尚未被选择在递归的每一层,我们......
  • 洛谷题单指南-二叉树-P1030 [NOIP2001 普及组] 求先序排列
    原题链接:https://www.luogu.com.cn/problem/P1030题意解读:已知中序、后序,求先序。解题思路:与洛谷题单指南-二叉树-P1827[USACO3.4]美国血统AmericanHeritage非常类似,不在介绍过程,直接给出代码。100分代码:#include<bits/stdc++.h>usingnamespacestd;stringin,post......
  • 全排列树层/树枝去重
    去重:1.对数组进行排序,保证相同数据能放在一起Arrays.sort(nums);2.进行去重:当这个元素与前一个元素相等,且i>0,并且前一个元素没被使用的时候进行去重。树层去重为什么前一个元素没被使用就可以去重:在回溯操作中,树层上的变化一直都是前一个元素的使用变成这个元素的使用。而树......
  • 数字排列 - 华为OD统一考试(C卷)
    OD统一考试(C卷)分值:200分题解:Java/Python/C++题目描述小明负责公司年会,想出一个趣味游戏:屏幕给出1−9中任意4个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第n位置的数字,其中n为给出数字中最大的(如果不到这么多数字则......
  • leetcode回溯法典型例题:39.组合总和、40组合总和 II、46.全排列、47.全排列 II
    leetcode回溯法典型例题:39.组合总和、40组合总和II、46.全排列、47.全排列II39.组合总和39.组合总和-力扣(LeetCode)思路构建组合使用递归的方式构建出所有组合。由题意可知,元素可以无限取用,所以我们构建的时候每确定一个数字,进入更深层递归的时候,每个数字都可以取用(此......