題目
兩個整數組(無序,可重複)
判斷兩個整數組是否完全相同(重複元素的重複次數也相同)
數組大小不同的直接得出不相同,大小相同的,排序之後再一一比較即可。
/*
*兩個整數組(無序,可重複)
*判斷兩個整數組是否完全相同(重複元素的重複次數也相同)
*/
#include<stdio.h>
#include<stdlib.h>
bool Equal(int* arr1,int n1, int* arr2, int n2);
void Sort(int* arr, int n);
int main(){
printf("輸入第一個數組大小");
int len1;
scanf("%d",&len1);
printf("輸入第一個數組:");
int *arr1 = (int* )malloc(sizeof(int ) * len1);
int i;
for(i = 0; i < len1; i++)
scanf("%d", &arr1[i]);
printf("輸入第二個數組大小");
int len2;
scanf("%d",&len2);
printf("輸入第二個數組:");
int *arr2 = (int* )malloc(sizeof(int ) * len2);
for(i = 0; i < len2; i++)
scanf("%d", &arr2[i]);
if(Equal(arr1,len1,arr2,len2))
printf("相同\n");
else
printf("不相同\n");
return 0;
}
void Sort(int* arr, int n){
int i,j;
for(i = 0; i < n; i++){
for(j = n-1; j > i; j--){
if(arr[j] < arr[j - 1]){
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
}
bool Equal(int* arr1,int n1, int* arr2, int n2){
if(n1 != n2)
return false;
else{
int i;
Sort(arr1,n1);
Sort(arr2,n2);
for(i=0; i < n1; i++){
if(arr1[i] != arr2[i])
return false;
}
}
return true;
}
輸入:
4
1 2 2 3
4
3 2 1 2
4
1 2 2 3
4
3 2 1 3
結果:
相同
不相同