明明的隨機數

一、明明的隨機數答案

明明的隨機數是一道經典的算法問題。題目要求輸入一個長度為n的正整數數列,隨機選取其中的若干個數,去重後輸出這些數字,且按照升序排列。我們可以用set數據結構實現去重,再用sort函數排序即可。

// C++代碼示例
#include<set>
#include<algorithm>
#include<iostream>

using namespace std;

int main(){
    int n;
    cin >> n;
    set<int> s;
    for(int i=0;i<n;i++){
        int x;
        cin >> x;
        s.insert(x);
    }
    cout << s.size() << endl;
    for(auto x: s){
        cout << x << " ";
    }
    return 0;
}

二、明明的隨機數python3

Python3中可以直接用set去重,再轉為列表。由於set自動去重和內部的排序規則,代碼實現起來非常簡單。

# Python3代碼示例
n = int(input())
s = set(map(int, input().split()))
ans = list(s)
ans.sort()
print(len(ans))
print(*ans)

三、明明的隨機數c語言

C語言沒有set這種現成的數據結構,需要手動實現去重。我們可以用循環遍歷整個數組,判斷是否有重複元素。為了快速判斷元素是否存在,可以用標記法,將元素和下標對應,出現過的元素對應的下標位置標記為1,後續再出現這個元素時,直接判斷該元素對應的下標是否為1,如果為1則為重複元素,跳過即可。

// C語言代碼示例
#include<stdio.h>
#include<stdlib.h>

int a[1001];

int main(){
    int n;
    scanf("%d", &n);
    for(int i=0;i<n;i++){
        int x;
        scanf("%d", &x);
        a[x]=1;
    }
    int cnt=0;
    for(int i=1;i<=1000;i++){
        if(a[i]){
            cnt++;
        }
    }
    printf("%d\n", cnt);
    for(int i=1;i<=1000;i++){
        if(a[i]){
            printf("%d ", i);
        }
    }
    return 0;
} 

四、明明的隨機數c

C語言中也可以使用標記法實現去重,只需要定義一個數組來存儲元素是否出現過即可。

// C代碼示例
#include<stdio.h>
#include<stdlib.h>

int a[1001];

int main(){
    int n;
    scanf("%d", &n);
    for(int i=0;i<n;i++){
        int x;
        scanf("%d", &x);
        a[x]=1;
    }
    int cnt=0;
    for(int i=1;i<=1000;i++){
        if(a[i]){
            cnt++;
        }
    }
    printf("%d\n", cnt);
    for(int i=1;i<=1000;i++){
        if(a[i]){
            printf("%d ", i);
        }
    }
    return 0;
}

五、明明的隨機數標記法c語言

在c語言中,可以使用標記法對元素進行去重。我們定義一個數組a來存儲每個元素是否出現過,初始值為0。遍歷輸入的序列時,若該元素尚未出現過,則將其對應的a數組下標標記為1。

// c語言代碼示例
#include<stdio.h>
#include<stdlib.h>

int a[1001];

int main(){
    int n;
    scanf("%d", &n);
    for(int i=0;i<n;i++){
        int x;
        scanf("%d", &x);
        a[x]=1;
    }
    int cnt=0;
    for(int i=1;i<=1000;i++){
        if(a[i]){
            cnt++;
        }
    }
    printf("%d\n", cnt);
    for(int i=1;i<=1000;i++){
        if(a[i]){
            printf("%d ", i);
        }
    }
    return 0;
}

六、明明的隨機數c++語言

C++語言可以使用set容器或者unordered_set容器實現去重。set容器自動按升序進行排序,而unordered_set容器則具有O(1)的快速查找和插入特性。

// C++代碼示例
#include<set>
#include<iostream>

using namespace std;

int main(){
    int n;
    cin >> n;
    unordered_set<int> s;
    for(int i=0;i<n;i++){
        int x;
        cin >> x;
        s.insert(x);
    }
    cout << s.size() << endl;
    for(auto x: s){
        cout << x << " ";
    }
    return 0;
}

七、明明的隨機數先去重c語言

在c語言中,除了使用標記法進行去重之外,還可以先將輸入的序列排序,再掃描一遍進行去重。這個方法在元素值很大的情況下可能不太適用。

// c語言代碼示例
#include<stdio.h>
#include<stdlib.h>

int a[1001];

int cmp(const void* a, const void* b){
    return *(int*)a-*(int*)b;
}

int main(){
    int n;
    scanf("%d", &n);
    int ans[1001], cnt=0;
    for(int i=0;i<n;i++){
        scanf("%d", &a[i]);
    }
    qsort(a, n, sizeof(int), cmp);
    for(int i=1;i<n;i++){
        if(a[i]!=a[i-1]){
            ans[cnt++]=a[i];
        }
    }
    ans[cnt++]=a[n-1];
    printf("%d\n", cnt);
    for(int i=0;i<cnt;i++){
        printf("%d ", ans[i]);
    }
    return 0;
}

八、明明的隨機數格式錯誤

在輸入數據時,可能會出現格式錯誤的情況,比如換行符被輸入到了數字中,或者輸入了非數字字符等。我們可以通過檢查每個數字是否合法,即是一個正整數且在1~1000範圍之內,來解決格式錯誤的問題。

// c++代碼示例
#include<iostream>
#include<set>
#include<string>

using namespace std;

int main(){
    int n;
    cin >> n;
    set<int> ans;
    string s;
    getline(cin, s);
    for(int i=0;i<n;i++){
        getline(cin, s);
        int x=0, flag=1;
        for(int j=0;j<s.size();j++){
            if(s[j]'9'){
                flag=0;
                break;
            }
            x=x*10+s[j]-'0';
            if(x>1000){
                flag=0;
                break;
            }
        }
        if(flag){
            ans.insert(x);
        }
    }
    cout << ans.size() << endl;
    for(auto x: ans){
        cout << x << " ";
    }
    return 0;
}

九、明明的隨機數洛谷

在洛谷上,明明的隨機數問題存在一些約束:輸入數字的範圍是1~10000,樣例數目不超過10個,每個樣例中元素的個數不超過1000個等。可以參考下面的代碼實現。

// c++代碼示例
#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main(){
    int n;
    cin >> n;
    vector<int> ans;
    for(int i=0;i<n;i++){
        int k;
        cin >> k;
        vector<int> a(k);
        for(int i=0;i<k;i++){
            cin >> a[i];
        }
        sort(a.begin(), a.end());
        a.erase(unique(a.begin(), a.end()), a.end());
        for(auto x: a){
            ans.push_back(x);
        }
    }
    sort(ans.begin(), ans.end());
    ans.erase(unique(ans.begin(), ans.end()), ans.end());
    cout << ans.size() << endl;
    for(auto x: ans){
        cout << x << " ";
    }
    return 0;
}

十、明明的隨機數c語言查重該怎麼辦

對於c語言,我們可以使用標記法進行查重。讀入每個數字時,如果在這個數字之前出現過,即已經被標記為1,則說明是重複的數字,直接跳過即可。

// c語言代碼示例
#include<stdio.h>
#include<stdlib.h>

int a[1001];

int main(){
    int n;
    scanf("%d", &n);
    for(int i=0;i<n;i++){
        int x;
        scanf("%d", &x);
        if(a[x]==0){
            a[x]=1;
        }
        else{
            continue;
        }
        printf("%d ", x);
    }
    return 0;
}

原創文章,作者:MSAY,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/142556.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
MSAY的頭像MSAY
上一篇 2024-10-12 09:43
下一篇 2024-10-12 09:44

相關推薦

  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • 如何使用random生成不重複的隨機數

    在編程開發中,我們經常需要使用隨機數來模擬一些場景或生成一些數據。但是如果隨機數重複,就會造成數據的不準確性。這時我們就需要使用random庫來生成不重複且隨機的數值。下面將從幾個…

    編程 2025-04-29
  • Python生成隨機數的多種方法

    本文將從以下幾個方面詳細介紹如何使用Python生成隨機數。 一、random模塊的使用 Python內置的random模塊能夠生成偽隨機數,使用該模塊,可以生成隨機數、隨機整數等…

    編程 2025-04-29
  • Python隨機數生成器

    Python隨機數生成器是一個常用的工具,它可以生成各種類型的隨機數,包括整數、浮點數和字符串等,廣泛用於模擬、遊戲、加密、測試等多個領域。本文將從多個方面對Python隨機數生成…

    編程 2025-04-28
  • Python生成1~100隨機數(代碼示例)

    本文將詳細闡述Python生成1~100隨機數,包括其定義、應用場景、實現方法等,幫助讀者更好的掌握該技能。 一、定義 隨機數是指在一定範圍內任選的數值,能夠在一定程度上保證數據的…

    編程 2025-04-27
  • 如何使用Python生成不重複的隨機數?

    要在Python中生成不重複的隨機數,我們可以使用random模塊中的sample函數,該函數可以從指定序列中隨機選擇指定數量的獨立元素。 一、生成指定範圍的隨機數 如果要生成指定…

    編程 2025-04-27
  • Python程序生成10個(1,100)範圍內的隨機數

    Python作為一門功能強大的編程語言,可以實現許多實用的功能,其中生成隨機數的應用也得到了廣泛的應用。在這篇文章中,我們將通過一個Python程序段生成10個(1,100)範圍內…

    編程 2025-04-27
  • c語言生成隨機數的完全指南

    一、rand函數的基本使用 rand函數是c語言中生成隨機數的函數,在使用該函數前需要先包含stdlib.h頭文件,該函數的語法如下所示。 int rand(void); 該函數返…

    編程 2025-04-23
  • Go隨機數的多個方面詳細闡述

    Go是一門面向對象的編程語言,隨機數在編程過程中是非常有用的。Go語言提供了一系列函數來生成隨機數,包括偽隨機數生成器和真隨機數生成器。本文將從多個方面對Go隨機數做詳細的闡述。 …

    編程 2025-04-12
  • /dev/random 隨機數生成器

    一、簡介 /dev/random 是一個偽隨機數生成器,通過收集內核環境中不可預測的信息,如硬盤活動、鼠標移動、鍵盤敲擊等,產生隨機的數據。這個設備文件在 Unix 和類 Unix…

    編程 2025-04-12

發表回復

登錄後才能評論