文章
17
粉丝
148
获赞
3
访问
181.7k
#include <iostream>
using namespace std;
int num[30];
bool temp[1000]={false};
//快排
void quick(int start,int end){
if(start >= end) return;
int i=start,j=end,base=num[start],temp;
while(i<j){
while(num[j]>=base && i<j) j--;
while(num[i]<=base && i<j) i++;
if(i<j){
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
num[start]=num[i];
num[i]=base;
quick(start,i-1);
quick(i+1,end);
}
int main(void){
int N;
cin >> N;
for(int i=0;i<N;i++){
int Tnum;
cin >> Tnum;
//如果输入的以前输入过,那么过滤掉,并统计最后有效不重复数据有几个
if(!temp[Tnum]) {
num[i]=Tnum;
temp[Tnum]=true;
}else{
N--;
i--;
}
}
//排序
quick(0,N-1);
//有数数据只有一个和多个两种情况
//只有一个时输出两个,例如(6,6)
if(N!=1){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(j==i) continue;
cout << "(" << num[i] << "," << num[j] << ")" << endl;
...
登录后发布评论
建议和正确代码比较一下,看是哪些数据出问题
这个代码实现的也太复杂了吧。。不是两个for就完成的事嘛