A140.数字全排列
2025-08-12 21:47:44
发布于:江苏
0阅读
0回复
0点赞
#include <iostream>
using namespace std;
int n, a[11];//a数组用来记录集合
bool vis[11];//标记一个数是否被访问
//决定第x+1位上的数 
void dfs(int x) {
	//递归结束 
	if (x == n) {
        //输出集合
		for (int i=1; i<=n; i++) {
			cout << a[i] << ' '; 
		}cout << endl;
		return;
	} 
	//遍历下一个数 
	for (int i=1; i<=n; i++) {
		if (!vis[i]) {
			vis[i] = 1;
			a[x+1] = i;
			dfs(x+1);
            //a[x+1] = 0; 可以省略,因为会被覆盖掉
			vis[i] = 0;//为了确保排列的完整性,这一步不能省略
		}
	}
}
int main() {
	cin >> n;
	dfs(0);
	return 0;
}
这里空空如也


有帮助,赞一个