SDU 数据结构实验作业
实验一 递归练习
实验内容
1、 输入2-10个大于0的正整数,如果输入0作为结束。
2、 输出这几个整数的全排列,每个数之间用半角“,”隔开,中间不要有空格,每个排列单独一行。
3、 程序一定要有Input、Output、End提示信息,但是不要有格式没有出现的其他提示,以下各实验相同。
4、 程序最后增加system(pause),显示Press any key to continue并暂停。
#include <iostream>
using namespace std;
void Permutation(int data[],int start,int end);
void Swap(int& a,int& b);
int main()
{
cout<<"Input"<<endl;
int data[10],i=0;
while(true){
cin>>data[i];
if(data[i]==0){
break;
}
i++;
}
cout<<"Ouput"<<endl;
Permutation(data,0,i);
// cout<<"Press any key to continue"<<endl;
cout<<"End"<<endl;
system("pause");
return 0;
}
void Permutation(int data[],int start,int end){
int i;
if(start==end){
for(int j=0;j<end;j++){
if(j==end-1){
cout<<data[j]<<endl;
break;
}else{
cout<<data[j]<<",";
}
}
}
for(i=start;i<end;i++){
Swap(data[start],data[i]);
Permutation(data,start+1,end);
Swap(data[start],data[i]);
}
}
void Swap(int& a,int& b){
int temp;
temp=a;a=b;b=temp;
}
运行结果: