m0_60149056 2021-07-13 22:05 采纳率: 50%
浏览 26
已采纳

关于#c++#的程序

描述

快递公司的某站点收到了很多件物品,快递员会给每类物品贴上一个数字标签,同一类物品的数字标签相同,以便自动化处理。

现在一批物品标签都贴完之后,快递员想让你帮他统计这些物品总共有多少类,每类物品各有多少件。
输入格式

第一行包含一个正整数n,表示物品的个数;

第二行包含n个正整数,表示快递员在物品上所贴标签的数字,两两之间用一个空格分隔。
输出格式

第一行包含一个正整数m,接下来的m行,每行包含两个数,用一个空格分隔,第一个数表示代表分类的数字xi,第二个数字表示分类编号为xi的物品的个数。
样例输入

10
2 3 1 12 3 8 8 2 2 2

样例输出

5
1 1
2 4
3 2
8 2
12 1

问题提示

1<n<10,000, 1≤xi≤1000。

  • 写回答

1条回答 默认 最新

  • 浪客 2021-07-13 22:53
    关注
    
    #include <iostream>
    using namespace std;
    
    typedef struct _XI 
    {
        int xi;
        int count;
    }XI;
    
    int main()
    {
        int n,t;
        int iclass = 0;
        cin >> n;
    
        XI* xi = new XI[n]{0};    
        for (int j, i = 0; i < n; i++)
        {
            cin >> t;
            for (j = 0; j < iclass; j++)
            {
                if (xi[j].xi == t)
                {
                    xi[j].count++;
                    break;
                }
            }
            if (j == iclass)
            {
                xi[j].xi = t;
                xi[j].count++;
                iclass++;
            }
        }
    
        XI xit;
        for (int j, i = 0; i < iclass-1; i++)
        {    
            for (j = i; j < iclass; j++)
            {
                if (xi[i].xi > xi[j].xi)
                {
                    xit = xi[i];
                    xi[i] = xi[j];
                    xi[j] = xit;
                }
            }
        }
    
        cout << iclass << endl;
        for (int j = 0; j < iclass; j++)
        {
            cout << xi[j].xi << " " << xi[j].count << endl;
        }
        
        return 0;
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月14日
  • 创建了问题 7月13日