提交时间:2026-01-04 15:42:37
运行 ID: 81233
#include <iostream> #include <cstring> // 用于 memset(可选) using namespace std; int main() { int n; cin >> n; int arr[10005]; // n ≤ 10000 int Fmax = -1; // 最大值初始化为-1 // 读入数组并找出最大值 for (int i = 0; i < n; i++) { cin >> arr[i]; if (arr[i] > Fmax) { Fmax = arr[i]; } } // 创建计数数组,大小为 Fmax+1,并初始化为0 int* count = new int[Fmax + 1](); // 动态分配并值初始化(C++11 起支持()清零) // 或者用:int count[10005] = {0}; 但Fmax可能接近10000,栈上开大数组要小心 // 这里用动态分配更安全 // 统计频数 for (int i = 0; i < n; i++) { count[arr[i]]++; } // 输出从0到Fmax的频数 for (int i = 0; i <= Fmax; i++) { cout << count[i] << endl; } delete[] count; // 释放动态数组 return 0; }