题目大意:从n(1,2,3,4,,,n)个数字中取出来r个数字,输出全排列并且输出全排列的个数。
代码:
# include<cstdio>
# include<iostream>
# include<cstring>
# include<iomanip>
using namespace std;
int a[1000];
int vis[1000];
int ans = 0;
int n,r;
void print()
{
ans++;
for ( int i = 1;i <= r;i++ )
{
cout<<setw(3)<<a[i];
}
cout<<endl;
}
int search( int t )
{
for ( int i = 1;i <= n;i++ )
{
if (!vis[i])
{
a[i] = t;
vis[i] = 1;
if ( t==r )
print();
else
search(t+1);
vis[i] = 0;
}
}
}
int main(void)
{
// int n,r;
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
cin>>n>>r;
search(1);
cout<<"number = "<<ans<<endl;
return 0;
}