0

配列に別の配列のすべての配列値が含まれているかどうかを確認するプログラムを作成しようとしました。したがって、それが真の場合、プログラムはその値を使用して 1 を返します。そうでない場合は、0 を返します (私は p と名付けました)。しかし、私はそのプログラムを作ることができませんでした。手伝っていただけませんか?

4

1 に答える 1

1
#include <stdio.h>

int isSubset(int arr1[], int arr2[], int m, int n)
{
    int i = 0;
    int j = 0;
    for (i=0; i<n; i++)
    {
        for (j = 0; j<m; j++)
        {
           if(arr2[i] == arr1[j])
              break;
        }

        /* If the above inner loop was not broken at all then
           arr2[i] is not present in arr1[] */
        if (j == m)
           return 0;
    }

    /* If we reach here then all elements of arr2[] 
      are present in arr1[] */
    return 1;
}

int main()
{
    int arr1[] = {11, 1, 13, 21, 3, 7};
    int arr2[] = {11, 2, 7, 1};

    int m = sizeof(arr1)/sizeof(arr1[0]);
    int n = sizeof(arr2)/sizeof(arr2[0]);

    if(isSubset(arr1, arr2, m, n))
      printf("arr2[] is subset of arr1[] ");
    else
      printf("arr2[] is not a subset of arr1[]");      

    getchar();
    return 0;
}



Ideone リンクが稼働中: http://ideone.com/4u9oQm

于 2013-09-16T16:06:47.883 に答える