華為題庫 明明的隨機數

2021-10-05 14:26:45 字數 1877 閱讀 5345

題目描述

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了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 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...