U5-1-DFS-1
原题链接:67324.4.0U5笔记合集2025-08-23 17:44:46
发布于:江苏
一、循环枚举三个小球的可能
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
for(int k=1;k<=3;k++){
//cout<<i<<" "<<j<<" "<<k<<"\n";
printf("%d %d %d\n", i, j, k);
}
}
}
return 0;
}
二、无放回抽奖
#include <bits/stdc++.h>
using namespace std;
int a[1005], n;
void dfs(int k)
{
if (k == 1+n) {
for (int i=1; i<=n; i++) cout<<a[i]<<' ';
cout<<endl;
return ;
}
for (int i=1; i<=n; i++) {
if (vis[i] == 0) {
a[k] = i; //第k次抽奖的编号是 i
vis[i] = 1; //标记第i个小球已经抽过了
dfs(k+1); //下一次抽奖
vis[i] = 0; //为下一个方案做准备 (回溯)
}
}
}
int main()
{
cin >> n;
dfs (1);
return 0;
}
这里空空如也
有帮助,赞一个