题目大意:从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; }