小哼的學校要建立乙個圖書角,老師派小哼去找一些同學做調查,看看同學們都喜歡讀哪些書。小哼讓每個同學寫出乙個自己最想讀的書的isbn號(你知道嗎?每本書都有唯一的isbn號,不信話你去找本書翻到背面看看)。當然有一些好書會有很多同學都喜歡,這樣就會收集到很多重複的isbn號。小哼需要去掉其中重複的isbn號,即每個isbn號只保留乙個,也就說同樣的書只買一本(學校真是夠摳門的)。然後再把這些isbn號從小到大排序,小哼將按照排序好的isbn號去書店去買書。請你協助小哼完成「去重」與「排序」的工作。
輸入格式:
輸入有2行,第1行為乙個正整數,表示有n個同學參與調查(n<=100)。第2行有n個用空格隔開的正整數,為每本圖書的isbn號(假設圖書的isbn號在1~1000之間)。
輸出格式:
改編自全國青少年資訊學奧林匹克聯賽(noip2006)普及組第一題《明明的隨機數》。
限制:每個測試點1秒
樣例 1 :
輸入:
10
2040
3267
4020
89300
40015
輸出:
8
1520
3240
6789
300400
由題目可知分為兩種思路,可以先篩除重複數字再排序,也可以先排序再篩除重複數字,這道題目主要練習一下新學的快速排序。
#include
#include
using
namespace std;
void
quicksort
(int left,
int right, vector<
int>
&arr)
//快速排序
int i, j, base, temp;
i = left;j = right;
base = arr[left]
;while
(iwhile
(arr[i]
<=base&&iif(i < j)
} arr[left]
= arr[i]
; arr[i]
= base;
quicksort
(left, i -
1, arr)
;quicksort
(i +
1, right, arr);}
intmain()
quicksort(0
, a -
1, c)
;int count =1;
//第乙個數肯定不會重複 讓計數器等於一
for(
int i =
1; i < a; i++)}
cout << count << endl;cout << c[0]
<<
" ";
//輸出一共有多少個不重複的數同時換行輸出第乙個數
for(
int i =
1; i < a; i++)}
return0;
}
小哼買書 排序去重
小哼的學校要建立乙個圖書角,老師派小哼去找一些同學做調查,看看同學們都喜歡讀哪些書。小哼讓每個同學寫出乙個自己最想讀的書的isbn號 你知道嗎?每本書都有唯一的isbn號,不信話你去找本書翻到背面看看 當然有一些好書會有很多同學都喜歡,這樣就會收集到很多重複的isbn號。小哼需要去掉其中重複的isb...
快速排序(啊哈演算法)
include include using namespace std int a 101 n void quicksort int left,int right quicksort 1,n for i 1 i n i while arr i temp ii 這裡兩個while的順序是不能改變的,想...
快速排序(啊哈演算法)
include include using namespace std int a 101 n void quicksort int left,int right quicksort 1,n for i 1 i n i while arr i temp ii 這裡兩個while的順序是不能改變的,想...