資源限制
時間限制:1.0s 記憶體限制:256.0mb
問題描述
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數(n≤100),對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成「去重」與「排序」的工作。
輸入格式
輸入有2行,第1行為1個正整數,表示所生成的隨機數的個數:n
第2行有n個用空格隔開的正整數,為所產生的隨機數。
輸出格式
輸出也是2行,第1行為1個正整數m,表示不相同的隨機數的個數。第2行為m個用空格隔開的正整數,為從小到大排好序的不相同的隨機數。
樣例輸入
1020 40 32 67 40 20 89 300 400 15
樣例輸出
815 20 32 40 67 89 300 400
資料規模和約定
(n≤100)
解題方法:
源程式:
#include
#include
//標頭檔案
using namespace std;
set<
int>
m;void
getdate
(int n)
//輸入
}int
main()
評測結果:
解題方法:
還有一種方法是:使用者每輸入乙個資料,就和該陣列之前的資料對比,這樣每輸入乙個都要遍歷陣列,效率較低。當資料量較小時也是不錯的一種方法。
常見的排序方法有:插入排序,氣泡排序,選擇排序,謝爾排序,快速排序,堆積排序,二路歸併排序,基數排序。源程式:本題目我使用的是謝爾排序,可根據自己喜好選擇對口的排序方法。
#include
#include
#include
using namespace std;
int a[
100]
;int length =0;
//去重完畢後的長度
void
distinct
(int n)
//去重函式
;int b[
100]
;//memset(dis, 0, sizeof(dis));//初始化為零
for(
int i =
0; i < n; i++)}
}void
sorting()
//排序函式}}
while
(flag !=0)
;}}void
print()
//輸出
intmain()
評測結果: 筆試題 明明的隨機數
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...
C 明明的隨機數
明明的隨機數 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1 到1000 之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完...
C ,明明的隨機數
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序 ...