用c语言编程:设计一个算法来检查 m x n 的二维整数数组 a 中的所有元素是否都是唯一的,并输出相应的 ‘yes’ 或 ‘no’ 结果
时间: 2024-11-15 19:21:33 浏览: 24
白色大气风格的旅游酒店企业网站模板.zip
在C语言中,你可以使用哈希表(如`unordered_set`)或者排序+双指针法来检查一个m x n的二维数组a中的所有元素是否唯一。这里是一个基于哈希表的简单示例:
```c
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <unordered_set>
bool areElementsUnique(int arr[][n], int m, int n) {
unordered_set<int> uniqueSet;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (uniqueSet.find(arr[i][j]) != uniqueSet.end()) {
return false; // 如果找到重复元素,则返回false
}
uniqueSet.insert(arr[i][j]); // 插入元素到哈希表中
}
}
return true; // 所有元素都唯一,返回true
}
int main() {
int m, n;
printf("Enter the number of rows and columns: ");
scanf("%d %d", &m, &n);
int arr[m][n];
// 输入二维数组
bool result = areElementsUnique(arr, m, n);
if (result)
printf("Yes, all elements are unique.\n");
else
printf("No, some elements are not unique.\n");
return 0;
}
```
这个程序首先创建一个无序集合(哈希表),然后遍历数组的每个元素。如果遇到已经存在于集合中的元素,说明有重复,函数立即返回`false`;反之,将元素添加到集合中。遍历结束后,如果集合大小等于数组元素总数,说明所有元素都是唯一的。
阅读全文