题目一
(1/1 分数)
题目描述
输入三个1-9的互不相同的数字,求出所有由这三个数字组成的,且各位数字各不相同的三位数
输入格式 三个1-9的数字,用空格隔开
每行一个三位数,将所有符合条件的数输出,按字典序排列
样例输入
7 8 9样例输出
789 798 ...
代码框
#include<iostream>
using namespace std;
void swap(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
int Partition(int *array,int low,int high){
int pivot=array[low];
while(low<high){
while(low<high&&array[low]<=array[high]) high--;
swap(array[low],array[high]);
while(low<high&&array[low]<=array[high]) low++;
swap(array[high],array[low]);
}
array[high]=pivot;
return high;
}
void QuickSort(int *array,int low,int high){
if(low<high){
int pivot=Partition(array,low,high);
QuickSort(array,low,pivot-1);
QuickSort(array,pivot+1,high);
}
return;
}
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a==b||a==c||b==c||a<1||a>9||b<1||b>9||c<1||c>9) return false;
int array[3]={a,b,c};
QuickSort(array,0,2);
cout<<array[0]*100+array[1]*10+array[2]<<endl;
swap(array[1],array[2]);
cout<<array[0]*100+array[1]*10+array[2]<<endl;
QuickSort(array,0,2);
swap(array[0],array[1]);
cout<<array[0]*100+array[1]*10+array[2]<<endl;
swap(array[1],array[2]);
cout<<array[0]*100+array[1]*10+array[2]<<endl;
swap(array[0],array[1]);
swap(array[1],array[2]);
cout<<array[0]*100+array[1]*10+array[2]<<endl;
swap(array[1],array[2]);
cout<<array[0]*100+array[1]*10+array[2]<<endl;
return 0;
}