直接来吧:
#include<bits/stdc++.h>
using namespace std;
int n,r,a[15],b[15],u[15];
void dg(int dep)
{
if(dep>n)
{
for(int i=1;i<=n;i++)
{
putchar(' ');
putchar(a[i]+48);
}
putchar('\n');
}
else
{
for(int i=1;i<=n;i++)
{
if(u[i]==0)
{
a[dep]=b[i];
u[i]=1;
dg(dep+1);
u[i]=0;
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>b[i];
dg(1);
return 0;
}
该程序使用C++编写,主要涉及深度优先搜索(DFS)策略。它接受一个整数n和一个数组b,通过DFS填充另一个数组a,并在过程中切换变量u的状态。此代码段可能用于解决某种排列或组合问题。

被折叠的 条评论
为什么被折叠?



