ACWing94. 递归实现排列型枚举
题面
把 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
题解——无赖做法
#include <bits/stdc++.h> using namespace std; int arr[100]; int main() { int n; cin >> n; for(int i = 0; i < n; i++) { arr[i] = i; } do { for(int i = 0; i < n; i++) printf("%d ", arr[i]); putchar(10); }while(next_permutation(arr, arr+n)); return 0; }
题解——使用递归
在这里我锻炼自己使用了bitset,其实完全使用bool数组没有任何毛病
#include <bits/stdc++.h> using namespace std; int n; vector<int >order; bitset<20> chosen; void cal(int x) { if(x > n) { for(int i = 0; i < order.size(); i++) printf("%d ", order[i]); putchar(10); return; } for(int i = 1; i <= n; i++) { if(!chosen[i]) { order.push_back(i); chosen.set(i); cal(x+1); order.pop_back(); chosen.reset(i); } } } int main() { scanf("%d", &n); cal(1); return 0; }
本文来自博客园,作者:心坚石穿,转载请注明原文链接:https://www.cnblogs.com/xjsc01/p/16438227.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)