【题解】LuoguP1059明明的随机数

STL的sort+unique做法

unique是个去重函数,其实是把重复的元素放在数组后边。代码如下:

#include <bits/stdc++.h>
using namespace std;
int a[100];
int main(){
    int len;
    cin >> len;
    for(int i = 0;i < len;i ++)cin >> a[i];
    sort(a,a+len); //记住!先 排 序
    len = unique(a,a+len) - a; //如果你想得到前几个去重后的元素,你就得这么写
    cout << len << endl;
    for(int i = 0;i < len;i ++)cout << a[i] << ' ';
}

压行版本:

#include <bits/stdc++.h>
int a[100],en;
int main(){
    std::cin >> len;
    for(int i = 0;i < len;i ++)std::cin >> a[i];
    std::sort(a,a+len); //记住!先 排 序
    len = std::unique(a,a+len) - a; //如果你想得到前几个去重后的元素,你就得这么写
    std::cout << len << std::endl;
    for(int i = 0;i < len;i ++)std::cout << a[i] << ' ';
}

除了考试;死也不写return0;


D语言做法

D语言做法就是个正常做法了,代码如下:

import std.stdio;
void shell_sort(int[] arr, int len) {//这是我自己写的一个Shell排序
    int gap, i, j;
    int temp;
    for (gap = len >> 1; gap > 0; gap = gap >> 1)
        for (i = gap; i < len; i++) {
            temp = arr[i];
            for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap)
                arr[j + gap] = arr[j];
            arr[j + gap] = temp;
        }
}

int[100] a = [100,100,100,345,11,12350,23];
int main(string[] args){
    int n;int c;
    readf("%d",&n);
    for (int i = 0 ; o < n;i ++)   readf("%d",&a[i]);
    shell_sort(a,8);
    for(int i = 1;i < n;i ++){
        c = a[i];
        if(!i)write(a[i]," ");
        else if(c != a[i-1])write(a[i]," ");
        else ++i;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/sdltf/p/12610362.html