判断两个数组是否包含相同元素.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int same_set(int a[], int b[], int len) {
  4. // 创建两个哈希表,记录每个数组中元素的出现次数
  5. int count_a[101] = {0}; // 假设数组元素值的范围是0-100
  6. int count_b[101] = {0};
  7. int i;
  8. // 记录数组a中每个元素的出现次数
  9. for (i = 0; i < len; i++) {
  10. count_a[a[i]]++;
  11. }
  12. // 记录数组b中每个元素的出现次数
  13. for (i = 0; i < len; i++) {
  14. count_b[b[i]]++;
  15. }
  16. // 比较两个哈希表中的元素出现次数
  17. for (i = 0; i < 101; i++) {
  18. if (count_a[i] != count_b[i]) {
  19. return 0;
  20. }
  21. }
  22. return 1;
  23. }
  24. int main() {
  25. int len;
  26. // 读取数组元素个数
  27. scanf("%d", &len);
  28. int a[len];
  29. int b[len];
  30. int i;
  31. // 读取第一个数组的各个值
  32. for (i = 0; i < len; i++) {
  33. scanf("%d", &a[i]);
  34. }
  35. // 读取第二个数组的各个值
  36. for (i = 0; i < len; i++) {
  37. scanf("%d", &b[i]);
  38. }
  39. // 调用same_set函数并输出结果
  40. if (same_set(a, b, len)) {
  41. printf("1\n");
  42. } else {
  43. printf("0\n");
  44. }
  45. return 0;
  46. }