4.4 我数字1 输入一个二维数组,找到其中出现频率最高的数。
时间: 2024-12-19 09:28:48 浏览: 7
在C语言中,你可以使用哈希表(散列表)或者计数排序的思想来解决这个问题。由于二维数组可以视为一维数组的展开,我们先将其转化为一维数组,然后统计每个元素出现的次数。下面是大致的步骤:
1. 将二维数组转换为一维数组:
```c
int arr[9]; // 假设输入的是3x3的数组,总共9个元素
int row = sizeof(intArray) / sizeof(intArray[0]), col = sizeof(intArray[0]) / sizeof(intArray[0][0]);
for (int i = 0; i < row * col; i++) {
arr[i] = intArray[i / col][i % col];
}
```
2. 使用计数排序或者哈希表计算每个元素的出现次数:
```c
// 假设使用哈希表(实际上可以使用std::map或自定义结构体)
typedef struct {
int num;
int count;
} Frequency;
Frequency freq[100]; // 预估最多有100种不同的数字
for (int i = 0; i < row * col; i++) {
freq[arr[i]].count++;
}
int max_count = 0;
int most_frequent_num = -1; // 初始化最高频数为-1,避免数组未初始化的干扰
for (int i = 0; i < sizeof(freq) / sizeof(freq[0]); i++) {
if (freq[i].count > max_count) {
max_count = freq[i].count;
most_frequent_num = i;
}
}
```
3. 输出结果:
```c
printf("The number with the highest frequency is %d and it appears %d times.\n", most_frequent_num, max_count);
```
阅读全文