C/C++ 全排列问题
C++ 排列 问题
2023-09-11 14:22:06 时间
分治法
#include<iostream>
#include<math.h>
using namespace std;
void DE(int *num,int n,int m) {
if (n == m) {
for (int i = 0; i <= m; i++) {
cout << num[i] << " ";
}
cout << endl;
return;
}
for (int i = n; i <= m; i++) {
swap(num[n],num[i]);
DE(num,n + 1, m);
swap(num[n],num[i]);
}
}
int main() {
int n;
while (cin>>n) {
int* num = new int[n];
for (int i = 0; i < n; i++) {
num[i] = i + 1;
}
DE(num, 0, n-1);
delete[] num;
}
}
回溯法
#include<iostream>
using namespace std;
int num[8];
bool flag[8]{};
void DFS(int step,int n) {
if (step == n) {
for (int i = 0; i < n; i++) {
cout << num[i]<<" ";
}
cout << endl;
return;
}
for (int i = 0; i < n; i++) {
if (flag[i] == 0) {
flag[i] = 1;
num[step] = i+1;
DFS(step+1,n);
flag[i] = 0;
}
}
}
int main() {
int n;
while (cin >> n) {
if (n == 0)break;
DFS(0, n);
}
}
相关文章
- 创建单链表、二叉树(C++)
- c++保存数据到TXT
- 演练:创建和使用静态库 (C++)
- C/C++基础讲解(七十三)之常见试题解答篇(部分排序/产品销售记录处理)
- C++ QT中文件的读写操作(UI界面)
- 通过C语言或者C++编程语言结合ffmpeg拿到一些音视频的关键信息
- VS中c++文件调用c 函数 ,fatal error C1853 预编译头文件来自编译器的早期版本号,或者预编译头为 C++ 而在 C 中使用它(或相反)
- C/C++每日练习之 01字串(有点意思)
- C++函数调用过程深入分析
- C++设计模式——访问器模式(Visitor)
- c++ vector 初始化_C++--vector()的用法
- c++ Opencv物体检测封装(级联训练分类器方式检测)
- C语言使用技巧(二十一):VS CODE在windows下配置CMAKE编译环境【实现C/C++可同时在一个文件夹下编译】
- C++不能返回string&局部引用(二十六)
- C++指针和引用简介
- VS2019: C++代码静态分析改进和更新
- C++ 数据结构
- 【C++ 科学计算】矩阵变量类型总结