//从1到m中取n个数,允许重复取数
#include <iostream>
using namespace std;
int n,m, a[10];
void DFS(int k)
{ if (k==n)
{ for (int i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
}
else
for (int i=1; i<=m; i++)
{ a[k]=i; DFS(k+1); }
}
int main()
{ cin>>m>>n; DFS(0); }
//从1到m中取n个数,允许重复取数
#include <iostream>
using namespace std;
int n,m, a[10];
void DFS(int k)
{ if (k==n)
{ for (int i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
}
else
for (int i=1; i<=m; i++)
{ a[k]=i; DFS(k+1); }
}
int main()
{ cin>>m>>n; DFS(0); }
#include <iostream>
using namespace std;
int n,m, a[10];
void DFS(int k)
{ if (k==n)
{ for (int i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
}
else
for (int i=1; i<=m; i++)
{ int ok=1;
for(int j=0;j<=k-1;j++)
if(a[j]==i) ok=0 ;
if(ok) {a[k]=i; DFS(k+1);}
}
}
int main()
{ cin>>m>>n; DFS(0); }
//从1到m中取n个数,不允许重复取数
#include <iostream>
using namespace std;
int n,m, a[10]; bool bz[10];
void DFS(int k)
{ if (k==n)
{ for (int i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
}
else
for (int i=1; i<=m; i++)
if ( !bz[i] )
{ a[k]=i; bz[i]=true; DFS(k+1); bz[i]=false;}
}
int main()
{ cin>>m>>n; DFS(0); }
//从1到m中取n个数,不允许重复取数,即排列方法2
#include <iostream>
using namespace std;
int n,m, a[10];
void DFS(int k)
{ if (k==n)
{ for (int i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
}
else
for (int i=k; i<m; i++)
{ int t=a[k];a[k]=a[i];a[i]=t;
DFS(k+1);
t=a[k];a[k]=a[i];a[i]=t; }
}
int main()
{ cin>>m>>n;
for (int i=0; i<m; i++) a[i]=i+1;
DFS(0); return 0;
}
//从1到m中取n个数,不允许重复取数,即排列方法2
#include <iostream>
using namespace std;
int n,m, a[10];
void DFS(int k)
{ if (k==n)
{ for (int i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
}
else
for (int i=k; i<m; i++)
{ int t=a[k];a[k]=a[i];a[i]=t;
DFS(k+1);
t=a[k];a[k]=a[i];a[i]=t; }
}
int main()
{ cin>>m>>n;
DFS(0);
}