#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n;
int ans[N];
bool vis[N];
void print()
{
for(int i=1;i<=n;i++) cout<<ans[i]<<" ";
cout<<endl;
}
void dfs(int k)
{
if(k==n+1){
print();
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i] = true;
ans[k] = i;
dfs(k+1);
vis[i] = false;
}
}
}
int main()
{
cin>>n;
dfs(1);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n,r;
int ans[N];
bool vis[N];
void print()
{
for(int i=1;i<=r;i++) cout<<ans[i]<<" ";
cout<<endl;
}
void dfs(int k)
{
if(k==r+1){
print();
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i] = true;
ans[k] = i;
dfs(k+1);
vis[i] = false;
}
}
}
int main()
{
cin>>n>>r;
dfs(1);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n,r;
int ans[N];
bool vis[N];
void print()
{
for(int i=1;i<=r;i++) cout<<ans[i]<<" ";
cout<<endl;
}
void dfs(int k)
{
if(k==r+1){
print();
return;
}
for(int i=ans[k-1]+1;i<=n;i++)
{
if(!vis[i])
{
vis[i] = true;
ans[k] = i;
dfs(k+1);
vis[i] = false;
}
}
}
int main()
{
cin>>n>>r;
dfs(1);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n;
int ans[N];
int nums[N];
bool vis[N];
void print()
{
for(int i=1;i<=n;i++) cout<<ans[i]<<" ";
cout<<endl;
}
void dfs(int k)
{
if(k==n+1){
print();
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i] = true;
ans[k] = nums[i];
dfs(k+1);
vis[i] = false;
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>nums[i];
dfs(1);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n,r;
int ans[N];
int nums[N];
bool vis[N];
void print()
{
for(int i=1;i<=r;i++) cout<<ans[i]<<" ";
cout<<endl;
}
void dfs(int k)
{
if(k==r+1){
print();
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i] = true;
ans[k] = nums[i];
dfs(k+1);
vis[i] = false;
}
}
}
int main()
{
cin>>n>>r;
for(int i=1;i<=n;i++) cin>>nums[i];
dfs(1);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 30;
int n,r;
int ans[N];
int nums[N];
bool vis[N];
void print()
{
for(int i=1;i<=r;i++) cout<<ans[i]<<" ";
cout<<endl;
}
void dfs(int k,int s)
{
if(k==r+1){
print();
return;
}
for(int i=s;i<=n;i++)
{
if(!vis[i])
{
vis[i] = true;
ans[k] = nums[i];
dfs(k+1,i+1);
vis[i] = false;
}
}
}
int main()
{
cin>>n>>r;
for(int i=1;i<=n;i++) cin>>nums[i];
dfs(1,1);
return 0;
}
原文:https://www.cnblogs.com/zheblog/p/15190157.html