关于#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。


#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;

}