wikioi天梯之1075 明明的随机数

来源:互联网 发布:项目管控软件 编辑:程序博客网 时间:2024/05/17 03:44

题目

直接做则有下面的

#include <iostream>#include<algorithm>using namespace std;int main(){    int N,i,j;    int num[101],num1[101];    cin>>N;    for(int i = 0; i < N;i++)    cin>>num[i];    sort(num,num + N);    num1[0] = num[0];    for(i = 1, j = 1;i < N;i++)    {        if(num[i] != num[i-1])        {            num1[j] =num[i];            j++;        }    }    cout<<j<<endl;    for(i = 0; i < j;i++)    cout<<num1[i]<<" ";    return 0;}
看到有人用桶排序来做 来感受一下桶排序吧微笑

#include<iostream>using namespace std;bool a[1001];//用数组来当桶 感觉有点像hash 在这声明一个全局数组 默认值全为 0 可以输出来验证//貌似全局变量才会这样用0初始化数组 写到main函数里面的话就没有自动初始化了int main(){    int N,tem,count = 0;    cin>>N;    for(int i = 0; i < N; i++)    {        cin>>tem;        if(a[tem] == false)        {            a[tem] = true;            count++;        }    }    cout<<count<<endl;    for(int i = 0; i < 1001; i++)        if(a[i])cout<<i<<" ";}

数组自动有序 下标值就是原来的数字大笑

另外我尝试用了现在还不熟悉的map来做 但是后面两种方法的运行时间没有第一个快 第一个是2ms 其他的都是4ms

可能空间占用太了吧

#include<iostream>#include<map>using namespace std;int main(){    map<int,int> num;    int N,tem,count = 0;    cin>>N;    for(int i = 0;i < N;i++)    {        cin>>tem;        if(num[tem] == 0)        {             count++;             num[tem] = 1;        }    }    cout<<count<<endl;    for(map <int, int>::iterator k = num.begin();k != num.end();k++)    {        if(k->second)cout<<k->first<<" ";    }    return 0;}



0 0
原创粉丝点击