Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 25 kết quả

Đề tài: đếm số các phần tử chỉ xuất hiện trong mảng a mà không xuất hiện trong mang b

  1. #1
    Ngày gia nhập
    01 2012
    Nơi ở
    hcm city
    Bài viết
    5

    Red face đếm số các phần tử chỉ xuất hiện trong mảng a mà không xuất hiện trong mang b

    bạn nào co ý tưởng làm bài nay help mình với

  2. #2
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Ý tưởng đơn giản nhất là duyệt tuần tự từng phần tử mảng A so với tất cả các phần tử ở nảng B, nếu gặp thì đánh dấu
    -> Xuất ra những phần tử không đánh dấu
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  3. #3
    Ngày gia nhập
    09 2011
    Bài viết
    16

    ý tưởng của mình là sử dụng 2 vòng lặp duyệt 2 mảng để so sánh lần lượt từ a[0] với b[0]->b[max] , a[1] với b[0]->b[max]....,nếu thỏa mẵn điều kiện phần tử của mảng A đó không trùng với phần tử nào của mảng B thì tăng biến đếm lên 1.
    đây là code của mình không biết đúng ý bạn không:

    C++ Code:
    1. #include<conio>
    2. #include<iostream>
    3.  
    4. int check(int* a,int m,int* b,int n)
    5. {
    6.  int dem=0,i,j,k;
    7.  for( i=0;i<m;i++)
    8.   {
    9.    for(j=0;j<n;j++)
    10.     {
    11.       k=0;
    12.       if(a[i]==b[j]) break;
    13.        else          k=1;
    14.      }
    15.      if(k==1)
    16.      dem++;
    17.  
    18.    }
    19.    return dem;
    20. }
    21. main()
    22. {
    23. int a[10],b[10],m,n,i;
    24. cout<<"\nnhap so phan tu mang a:";cin>>m;
    25. cout<<"\nnhap so phan tu mang b:";cin>>n;
    26.  
    27. cout<<"\n\nNHAP MANG:";
    28. cout<<"\nmang A:";
    29. for(i=0;i<m;i++)
    30. cin>>a[i];
    31. cout<<"\nmang B:";
    32. for(i=0;i<n;i++)
    33. cin>>b[i];
    34.  
    35. cout<<"so luong:"<<check(a,m,b,n);
    36. getch();
    37. }

  4. #4
    Ngày gia nhập
    01 2012
    Nơi ở
    hcm city
    Bài viết
    5

    đúng oy bạn, thanks bạn nhiu nha

  5. #5
    Ngày gia nhập
    02 2012
    Bài viết
    2

    Mặc định Mở rộng 1 tí

    Nếu là đếm số phần tử khác nhau đôi một xuất hiện trong mãng a mà ko xuất hiện trong mãng b thì làm sao ?

  6. #6
    Ngày gia nhập
    01 2012
    Nơi ở
    hcm city
    Bài viết
    5

    Mặc định đếm số các phần tử chỉ xuất hiện trong mảng a mà không xuất hiện trong mang b

    Trích dẫn Nguyên bản được gửi bởi tvsonbkdn Xem bài viết
    Nếu là đếm số phần tử khác nhau đôi một xuất hiện trong mãng a mà ko xuất hiện trong mãng b thì làm sao ?
    mình không hiểu đề mở rộng này,bạn ví dụ 1 xí cho rõ được không?

  7. #7
    Ngày gia nhập
    02 2012
    Bài viết
    2

    VD: mảng A : aabc
    mảng B : cefg
    vậy thì: số phần tử xuất hiện trong A mà ko có trong B là COUNT==3 (A[0] , A[1], A[2]) .
    Nhưng vì A[0] == A[1] nên COUNT ==1 (A[2]) thôi.ý mình là thế đó

  8. #8
    Ngày gia nhập
    04 2010
    Nơi ở
    Bình Phước
    Bài viết
    78

    Tạo 2 mảng mới để lưu những phần tử xuất hiện trong mỗi mảng (không lặp lại ), vd trong mảng gốc là aabc thì mảng mới sẽ có abc
    Sau đó so sánh ở 2 mảng mới theo cách của bạn gì ở trên đó

  9. #9
    Ngày gia nhập
    11 2010
    Bài viết
    574

    Trích dẫn Nguyên bản được gửi bởi 0zMARIOz0 Xem bài viết
    ý tưởng của mình là sử dụng 2 vòng lặp duyệt 2 mảng để so sánh lần lượt từ a[0] với b[0]->b[max] , a[1] với b[0]->b[max]....,nếu thỏa mẵn điều kiện phần tử của mảng A đó không trùng với phần tử nào của mảng B thì tăng biến đếm lên 1.
    đây là code của mình không biết đúng ý bạn không:
    Thuật toán này của bạn có độ phức tạp O(|a||b|), nên với kích thước 2 mảng hơi lớn chút thì sẽ chạy chậm.

    Trong C++ có hàm set_difference thực hiện điều này trên 2 mảng đã sắp xếp với độ phức tạp O(|a|+|b|). Hàm trả về địa chỉ phần tử đứng ngay sau phần tử cuối cùng của tập hợp A\B;

    Như vậy công việc của ta là sắp xếp và gọi hàm trên:
    C++ Code:
    1. #include <iostream>
    2. #include <algorithm>
    3.  
    4. int main()
    5. {
    6.     int *a, *b, *c,m,n,i;
    7.     std::cout<<"\nnhap so phan tu mang a:";cin>>m;
    8.     std::cout<<"\nnhap so phan tu mang b:";cin>>n;
    9.  
    10.     a = new int[m];
    11.     c = new int[m];
    12.     b = new int[n];
    13.  
    14.     std::cout<<"\n\nNHAP MANG:";
    15.     std::cout<<"\nmang A:";
    16.     for(i=0;i<m;i++)
    17.         std::cin>>a[i];
    18.     std::cout<<"\nmang B:";
    19.     for(i=0;i<n;i++)
    20.         std::cin>>b[i];
    21.    
    22.     std::sort(a, a+m); // Sắp xếp 2 mảng a, b
    23.     std::sort(a, a+n);
    24.  
    25. #ifdef UNIQUE // Nếu cần tìm số phần tử khác nhau từng đôi một
    26. // Hàm unique sẽ loại bỏ các phần tử trùng nhau trong đoạn từ a đến a+m-1 và trả về vị trí cuối cùng của mảng
    27.     m = std::unique(a, a+m) - a;
    28.     n = std::unique(b, b+n) - b;
    29. #endif
    30.  
    31.     int *it = std::set_difference(a, a+m, b+n, c);
    32.  
    33.     std::cout<<"so phan tu thuoc a nhung khong thuoc b " << (it - c) << std::endl;
    34.  
    35.     delete[] a;
    36.     delete[] b;
    37.     delete[] c;
    38. }
    Đã được chỉnh sửa lần cuối bởi boss14420 : 12-02-2012 lúc 01:16 AM.

  10. #10
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    làm gì mà cứ phải phức tạp nó lên
    int main()
    {
    int i,j,t=0;
    int a[] = {1,2,4,3,45,5,66,5,5,4};
    int b[] = {1,2,4,3,45,5,66,5,5,4};
    for(i =0; i < sizeof(a)/4;i++) for(j = 0;j<sizeof(b)/4;j++) if(a[i] == a[j]) {t++; break;}
    printf("so phan tu khac là %d",sizeof(a)/4 -t);
    return 0;
    }

Các đề tài tương tự

  1. Lập trình C Xuất nhập file trong C kết quả xuất ra không đúng?
    Gửi bởi lamhoang100 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-06-2013, 05:38 PM
  2. Đếm các xâu thuận nghịch xuất hiện trong file và số lần xuất hiện của các xâu đó
    Gửi bởi orchidshl1 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 19-09-2012, 10:47 AM
  3. Xuất 1 kiểu dữ liệu là phân số mà không cần phải gọi qua hàm xuất trong class ?
    Gửi bởi giacmo1612 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 4
    Bài viết cuối: 24-03-2012, 02:38 PM
  4. Hỏi về tần xuất xuất hiện của một phần tử trong mảng
    Gửi bởi A10932 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 01-04-2008, 05:00 PM
  5. bài toán tìm số lần xuất hiện các phần tử xuất hiện trong 1 chuỗi
    Gửi bởi tuan_anhhhh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 11-03-2008, 09:30 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn