【蓝桥杯试题】递归实现排列型枚举
创始人
2024-05-27 18:48:26
0

💃🏼 本人简介:男
👶🏼 年龄:18
🤞 作者:那就叫我亮亮叭
📕 专栏:蓝桥杯试题

文章目录

  • 1. 题目描述
  • 2. 代码展示
    • 法一:dfs
    • 法二:next_permutation
      • `next_permutation/prev_permutation`函数:
  • 最后,感谢大家支持u (^ _ ^)

1. 题目描述

把 1∼n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。

  • 输入格式
    输入一个整数 n。

  • 输出格式

  • 按照从小到大的顺序输出所有方案,每行 1 个。

  • 首先,同一行相邻两个数用一个空格隔开。

  • 其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。

  • 数据范围
    1 ≤ n ≤ 9

  • 输入样例:

3
  • 输出样例:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

2. 代码展示

法一:dfs

#include
using namespace std;const int N = 15;
int n, path[N]; //用path存储数据【保存序列】
bool vis[N];  //用vis表示是否被使用过void dfs(int x){if(x > n){  //如果超出n,则表示都填完了,那么按存储的顺序全部打印for(int i = 1; i <= n; i++){if(vis[i]) cout << path[i] << " ";}   cout << endl;return ;}//未超出的话,则需要填入x,保存在path中for(int i = 1; i <= n; i++){    //依次选择1~n中是否被使用if(!vis[i]){    //如果未被使用vis[i] = true;  //记录下来使用过,修改状态path[x] = i;    //存进path中dfs(x + 1);     //遍历下一位vis[i] = false; //回溯}}
}int main(){cin >> n;memset(path, 0, sizeof(path)); //初始化path全为0dfs(1);return 0;
}

在这里插入图片描述

法二:next_permutation

next_permutation/prev_permutation函数:

  • next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止

  • prev_permutation函数与之相反,是生成给定序列的上一个较小的排列

  • next_permutation(数组头地址,数组尾地址);若下一个排列存在,则返回真,如果不存在则返回假

  • 若求上一个排列,则用prev_permutation

#include
#include
#include
using namespace std;const int N = 15;
int n, a[N]; //利用next_permutation函数
//next_permutation(数组头地址,数组尾地址);若下一个排列存在,则返回真,如果不存在则返回假.若求上一个排列,则用prev_permutation
int main(){cin >> n;for(int i = 1; i <= n; i++){a[i] = i;}do{for(int i = 1; i <= n; i++){cout << a[i] << " ";}cout <<  endl;        }while(next_permutation(a + 1, a + n + 1));return 0;
}

在这里插入图片描述

最后,感谢大家支持u (^ _ ^)

如果感觉这篇文章对你有帮助的话,不妨三连支持下,十分感谢(✪ω✪)。

printf("点个赞吧*^*");
cout << "收藏一下叭o_o";
System.out.println("评论一下吧^_^");
print("关注一下叭0-0")

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...