Miracle_InDream @ 2023-11-19 14:00:36
#include<bits/stdc++.h>
using namespace std;
int n,k;
int mp[15],a[15];
bool vis[15];
void dfs(int m)
{
if(m==k)
{
for(int i=1;i<=m;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
a[m]=mp[i];
vis[i]=1;
dfs(m+1);
vis[i]=0;
a[m]=0;
}
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
mp[i]=i;
}
memset(vis,0,sizeof(vis));
dfs(1);
return 0;
}
by ilibilib @ 2023-11-19 14:08:58
@shooting__star
要dfs到k+1,改一下就AC了。
#include<bits/stdc++.h>
using namespace std;
int n,k;
int mp[15],a[15];
bool vis[15];
void dfs(int m)
{
if(m==k+1)
{
for(int i=1;i<m;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
a[m]=mp[i];
vis[i]=1;
dfs(m+1);
vis[i]=0;
a[m]=0;
}
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
mp[i]=i;
}
memset(vis,0,sizeof(vis));
dfs(1);
return 0;
}
by 511_Juruo_wyk @ 2023-11-19 14:12:23
@shooting__star 代码需要改两出,已经注释出来了
by 511_Juruo_wyk @ 2023-11-19 14:12:43
#include<bits/stdc++.h>
using namespace std;
int n,k;
int mp[15],a[15];
bool vis[15];
void dfs(int m)
{
if(m>k)//应该是m>k,不然最后一个数就没取到
{
for(int i=1;i<=k;i++)//这里要写i<=k或者i<m,因为m要比k多1
{
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
a[m]=mp[i];
vis[i]=1;
dfs(m+1);
vis[i]=0;
a[m]=0;
}
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
mp[i]=i;
}
memset(vis,0,sizeof(vis));
dfs(1);
return 0;
}