(选排列)
下面程序的功能是利用递归方法生成从 1 到 n(n<10)的 n 个数中取 k(1<=k<=n)个数的 全部可能的排列(不一定按升序输出)。例如,当 n=3,k=2 时,应该输出(每行输出 5 个排列):
12 13 21 23 32
31
程序:
#include <iostream.h>
#include <iomanip.h>
int n,k,a[10];
long count=0;
void perm2(int j)
{
int i,p,t;
if( ① )
{
for(i=k;i<=n;i++)
{
count++;
t=a[k]; a[k]=a[i]; a[i]=t;
for( ② )
cout<<setw(1)<<a[p];
cout <<" ";
t=a[k];a[k]=a[i];a[i]=t;
if(count%5==0) cout <<endl;
}
return;
}
for(i=j;i<=n;i++)
{
t=a[j];a[j]=a[i];a[i]=t;
③ ;
t=a[j]; ④ ;
}
}
int main()
{
int i;
cout <<"nEntry n,k (k<=n)n"<<endl;
cin>>n>>k;
for(i=1;i<=n;i++) a[i]=i;
⑤ ;
cout <<endl;
return 0;
}
答案:
① j==k (或 k==j)由OIFans.cn收集
② p=1;p<=k;p++
③ perm2(j+1)
④ a[j]=a[i];a[i]=t
⑤ perm2(1)
蓝桥杯青少年创意编程 C++组 国赛(第11届、第12届、第13届)
蓝桥杯青少年组第十一届C++全国赛高级组讲解视频
蓝桥杯青少年组第十一届C++全国赛高级组讲解视频
蓝桥杯青少组C++省赛2020届真题讲解
11届蓝桥杯青少年组C++全国赛高级组 六.编程实现:求阶乘(python3实现)
11届蓝桥杯青少年组C++全国赛高级组 六.编程实现:求阶乘(python3实现)_第11届蓝桥杯国赛 求阶乘-CSDN博客
11届蓝桥杯青少年组C++全国赛高级组 七.编程实现:判断偶数(python3实现)
11届蓝桥杯青少年组C++全国赛高级组 七.编程实现:判断偶数(python3实现)_蓝桥杯c++第十一届省赛中高级组题目-CSDN博客
11届蓝桥杯青少年组C++全国赛高级组 八.编程实现:计数(python3实现)