虽然已经过了,为什么输出要减一
查看原帖
虽然已经过了,为什么输出要减一
289275
Terraria楼主2020/6/2 12:31

哪位大佬帮忙看一下这个代码,虽然已经AC了,但我还是想知道为什么输出个数的时候要减1

#include<bits/stdc++.h>
using namespace std;
int n,a[1111111],m=0,b[1111111];
void quick(int l, int r){
	int i=l,j=r,mid=a[(i+j)/2];
	while(i<=j){
		while(a[i]<mid) i++;
		while(mid<a[j]) j--;
		if(i<=j){
			swap(a[i],a[j]);
			i++;
			j--; 
		}
	}
	if(l<j) quick(l,j);
	if(i<r) quick(i,r);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	quick(1,n);
	for(int i=0;i<=n;i++){
		if(a[i+1]!=a[i]){
			b[m]=a[i];
			m++;
		}
	}
	cout<<m-1<<endl;
	for(int i=1;i<m;i++) cout<<b[i]<<" ";
	return 0;	
}
2020/6/2 12:31
加载中...