Zn50520234188 @ 2024-07-25 14:48:20
#include<iostream>
using namespace std;
int a[15]; //存数
bool b[15]={0};//记录使用
int n,k;
void duiwu(int x,int n,int k)
{
if(x==k)//够了,该输出了
{
for(int i=0;i<k;i++)
cout<<a[i]<<" ";
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(b[i])
continue;
int m=0;//判断重复
for(int j=0;j<x;j++)
if(a[j]==i)
m=1;
if(m)
continue;
a[x]=i;
b[i]=1;
duiwu(x+1,n,m);
a[x]=0;
b[i]=0;//回溯
}
}
int main()
{
cin>>n>>k;
duiwu(0,n,k);
return 0;
}
by Needna @ 2024-07-25 15:08:27
for(int i=1;i<=n;i++) { if(b[i]) continue; int m=0;//判断重复 for(int j=0;j<x;j++) if(a[j]==i) m=1; if(m) continue; a[x]=i; b[i]=1; duiwu(x+1,n,m); a[x]=0; b[i]=0;//回溯 这个写麻烦了 你看看这样写?for(int i=1;i<=c;i++) { if(d[i]==0) { d[i]=1; b[p]=i; fun(p+1); d[i]=0; } } d是判断重复使用的
by Needna @ 2024-07-25 15:09:47
这个是不太好看 你自己换个行看看
by yinzexuan @ 2024-07-26 09:34:28
大佬这格式……
by turing_IK @ 2024-07-29 11:17:39
@Zn50520234188
#include<bits/stdc++.h>
using namespace std;
int n,r,a[25]={1};
bool b[25];
void dfs(int step)
{
for(int i=1;i<=n;i++)
{
if(b[i]==0)
{
a[step]=i;
b[i]=1;
if(step==r)
{
for(int j=1;j<=r;j++)
{
cout<<a[j]<<" ";
}
cout<<endl;
}
else
dfs(step+1);
b[i]=0;
}
}
}
int main()
{
cin>>n>>r;
dfs(1);
return 0;
}
和p1157差不多
by yunyu2 @ 2024-08-03 11:25:13
#include <bits/stdc++.h>
using namespace std;
int n, k;
int a[15], use[15];
void dfs(int pos) {
if(pos==k+1) {
for(int i=1; i <= k; i++)
cout <<a[i]<< ' ';
cout << endl;
return;
}
for(int i=1;i<=n;i++)
if(!use[i])
{ // 如果第 i 个元素没有被使用
use[i]=1; // 将其标记为被使用
a[pos]=i; // 更新 a[pos]
dfs(pos+1); // 枚举下一个
use[i]=0; // 将其标记为未被使用
}
}
int main() {
cin >> n >> k;
dfs(1);
return 0;
}
@Zn50520234188