原题如下:

整数去重
1000(ms)
10000(kb)
1250 / 5773
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。
输入
多组测试数据;
对于每组数据:
输入包含两行;
第一行包含一个正整数n(1 <= n <= 20000),表示第二行序列中数字的个数;
第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于100。
输出
每组数据输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。
样例输入
5
10 12 93 12 75
样例输出
10 12 93 75

难度不是在算法。。。而是在输出格式,经过各种实验,如下:

#include <stdio.h>
int main()
{
  int n;
  while (scanf("%d", &n) != EOF)
  {
    int num1[20010] = { 0 };
    int tnum[20010] = { 0 };
    int i = 0;
    for (i = 0; i < n; i++)
    {
      scanf("%d", &num1[i]);
    }
    printf("%d", num1[0]);
    tnum[num1[0]] = 1;
    int j;
    for (j = 1; j < n; j++)
    {
      if (tnum[num1[j]] == 1)
        continue;
      printf(" %d", num1[j]);
      tnum[num1[j]] = 1;
    }
    printf("\r\n");
  }
  return 0;
}
最后修改:2019 年 02 月 27 日
如果觉得我的文章对你有用,请随意赞赏