答案(团队文件里有答案)
原题链接:141029.抽奖32026-08-16 14:47:19
发布于:吉林
#include <bits/stdc++.h>
using namespace std;
int n;
int a[10]; //记录每次抽的编号
bool vis[10]; //记录每个小球有没有被抽过
//如vis[3]如果是true 就表示3被抽过了
//dfs(k)表示在抽第k个小球
void dfs(int k) {
//正在抽第n+1个小球,前n个小球已经抽完
if (k == n + 1) {
//输出前n个小球抽的情况
for (int i = 1; i <= n; i ++ ) {
cout << a[i] << " ";
}
cout << endl;
return ;
}
//每次抽的时候都可以从1~n
for (int i = 1; i <= n; i ++ ) {
if (vis[i] == false) { //i没有被抽过
a[k] = i; //第k次抽的是i
vis[i] = true; //标记一下i被抽了
dfs(k + 1);
vis[i] = false;
//第k个球抽i的情况已经列完了
//需要将球i的标记恢复
}
}
}
int main() {
cin >> n;
dfs(1); //从第一个小球开始抽
return 0;
}
这里空空如也

















有帮助,赞一个