北航研究生複試2010上機第三題:數組是否相同

題目

兩個整數組(無序,可重複)
判斷兩個整數組是否完全相同(重複元素的重複次數也相同)


數組大小不同的直接得出不相同,大小相同的,排序之後再一一比較即可。


/*
*兩個整數組(無序,可重複)
*判斷兩個整數組是否完全相同(重複元素的重複次數也相同)
*/
#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

結果:
相同
不相同

發佈了76 篇原創文章 · 獲贊 83 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章