日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二十八、 统计工龄

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二十八、 统计工龄 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二十八、 統計工齡

文章目錄

  • 二十八、 統計工齡
    • 題目描述
    • 解題思路
    • 上機代碼

題目描述

給定公司N名員工的工齡,要求按工齡增序輸出每個工齡段有多少員工。

輸入格式:

輸入首先給出正整數N(即員工總人數);隨后給出N個整數,即每個員工的工齡,范圍在[18, 65]。

輸出格式:

按工齡的遞增順序輸出每個工齡的員工個數,格式為:“工齡:人數”。每項占一行。如果人數為0則不輸出該項。

測試輸入期待的輸出時間限制內存限制額外進程
測試用例 18
30 20 20 50 37 21 51 20
20:3
21:1
30:1
37:1
50:1
51:1
1秒64M0

解題思路

很簡單的排序題,數據范圍小,數據量也很少,任取一種排序方法都能輕松AC。

這里重點補充一種方法:桶排序。這種排序方法并沒有在教學大綱中,但認真讀過一些算法書籍,或者接觸過ACM的同學都應該知道這種排序方法。

桶排序是一種很快很簡單的排序方法,在指定區間 [a,b] 內,為每一個數都建立一個 “桶”,對于輸入的待排序數,屬于哪個 “桶” 就把它裝入哪對應的 “桶”中,最后按照 “桶” 的排列順序依次將數輸出即可。桶排序的思想很簡單,是一種典型的用空間換時間的排序方法。其限制條件也很明顯,對于空間開銷不能太大,空間開銷太大的排序不適合用桶排序。

如果題目中指定了數據的區間是【a,b】,我們在區間【a,b】上對每一個數都建立一個 “桶”。對于輸入數 m(a<= m <=b),就將其裝入編號為 m 的“桶”中;對于 n(a<= n <=b),就將 n 裝入編號 n 的 “桶”中。等所有輸入數都裝填完畢,按照 a 到 b 的順序,依次輸出“桶”中元素即可。(因為填入的數值與 “桶” 的編號相同,“桶”中有幾個元素,輸出時就將 “桶” 的編號輸出幾次,遇到空 “桶” 則直接跳過。)

桶的存儲結構也很簡單,用簡單的一維數組就可以。數組的長度就是“桶”的個數,數組的類型就是“桶”的最大容量。

比如 int a[100],“桶”的個數為 100,每只“桶”的容量是 32767。

上機代碼

本題就是典型的指定區間,很適合使用桶排序來求解,題目不需要依次輸出元素,僅輸出元素的個數就可以了。

#include<cstdio> #include<cstring> #include<cstdlib> using namespace std; //桶排序 int main() {int n, x, c[101];memset(c, 0, sizeof(c));scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d", &x);c[x]++;}for (int i = 18; i <= 65; i++){if(c[i]!=0)printf("%d:%d\n", i, c[i]);}//system("pause");return 0; }

總結

以上是生活随笔為你收集整理的二十八、 统计工龄的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。