題目描述
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數(n≤1000),對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成「去重」與「排序」的工作(同乙個測試用例裡可能會有多組資料,希望大家能正確處理)。
input param
n 輸入隨機數的個數
inputarray n個隨機整數組成的陣列
return value
outputarray 輸出處理後的隨機整數
注:測試用例保證輸入引數的正確性,答題者無需驗證。測試用例不止一組。
樣例輸入解釋:
樣例有兩組測試
第一組是3個數字,分別是:2,2,1。
第二組是11個數字,分別是:10,20,40,32,67,40,20,89,300,400,15。
輸入描述:
輸入多行,先輸入隨機整數的個數,再輸入相應個數的整數
輸出描述:
返回多行,處理後的結果
示例1輸入複製3
22111
1020
4032
6740
2089
300400
15輸出複製1
2101520
3240
6789
300400
法一:可以一開始令所有元素均為0,當輸入數值時,將輸入數值作為元素的索引,並將該元素賦值為1,這樣遍歷的時候,只要是1的都列印其索引,也就是輸入的數值。這樣可以避免多個相同數值的輸入,當有多個相同數值輸入時,都是對同乙個陣列索引賦值。一開始通過while(cin>>n)輸入維數,此時便執行while迴圈,先對陣列進行初始化
或者通過clear()清除,避免多次資料的混合。然後執行while(n–),通過n–及cin>>n對其進行輸入n個數值並對n索引的數值賦值1(可以去除重複),之後對其進行遍歷,通過if(arr[i])來篩選到底是哪些索引的數值賦值了,最後輸出即可。
法二:利用set容器,set容器不允許有重複元素,且插入的元素會自動排序int arr[1001] = ;//定義全為0的1001個元素的陣列
//這一步要放在while迴圈裡,每一次輸入新的陣列維數時,都要重新初始化(全 為0),否則會保留上次的資料。
通過for (set::iterator it = s.begin(); it != s.end(); it++)
來進行遍歷,it是指標,指向<>裡的,此處是指向int的指標,通過it把int資料拿出來,輸出即可。
#include
#include
using
namespace std;
void
printarray1()
;//定義全為0的1001個元素的陣列
//這一步要放在while迴圈裡,每一次輸入新的陣列維數時,都要重新初始化(全為0),否則會保留上次的資料
while
(n--
)for
(int i =
0; i <
1001
; i++)}
}}void
printarray2()
for(set<
int>
::iterator it = s.
begin()
; it != s.
end(
); it++)}
}int
main()
明明的隨機數(華為)
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...
華為 明明的隨機數
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...
華為機試 明明的隨機數
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...