1. 程式人生 > >指標 不重複數字 洛谷P4305——簡單

指標 不重複數字 洛谷P4305——簡單

題目描述

給出N個數,要求把其中重複的去掉,只保留第一次出現的數。
例如,給出的數為1 2 18 3 3 19 2 3 6 5 4,其中2和3有重複,去除後的結果為1 2 18 3 19 6 5 4。

輸入格式
輸入第一行為正整數T,表示有T組資料。

接下來每組資料包括兩行,第一行為正整數N,表示有N個數。第二行為要去重的N個正整數。

輸出格式
對於每組資料,輸出一行,為去重後剩下的數字,數字之間用一個空格隔開。

樣例輸入
2
11
1 2 18 3 3 19 2 3 6 5 4
6
1 2 3 4 5 6

樣例輸出
1 2 18 3 19 6 5 4
1 2 3 4 5 6

程式程式碼

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <set>
#include <cstring>
#include <map>
#include <cmath>
using namespace std;
int a[50005],t,n,b;
int Fun(int x)
{
    int y;
    if(b<0) 
	y=-b%50005;
	else 
	y=b%50005;
    while(a[y]&&
a[y]!=b) { ++y; y=y%50005; } return y; } void fun1(int b) { a[Fun(b)]=b; } bool fun2(int b) { return a[Fun(b)]==b; } int main() { int i,j; scanf("%d",&t); for(j=0;j<t;j++) { memset(a,0,sizeof(a)); scanf("%d",&n); for(i=0;i<n;i++) {
scanf("%d",&b); if(!fun2(b)) { printf("%d ",b); } fun1(b); } putchar(10); } }

說明
對於30%的資料,1 <= N <= 100,給出的數不大於100,均為非負整數;

對於50%的資料,1 <= N <= 10000,給出的數不大於10000,均為非負整數;

對於100%的資料,1 <= N <= 50000,給出的數在32位有符號整數範圍內。T<=50

PS:本部落格屬於中國石油大學勝利學院ACM協會所有!
BY:高文欣