Thứ Hai, 2 tháng 1, 2017

Bài tập 236 * Cho 2 mảng a,b. Hãy cho biết số lần xuất hiện của mảng a trong mảng b

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
#include <iostream>
using namespace std;

#define MAX 100

// MẢNG 1 CHIỀU 
// 1. HÀM NHẬP SỐ PHẦN TỬ
void NhapN(int &N)
{
 do
 {
  cout << "Moi ban nhap so phan tu cua mang N = ";
  cin >> N;

  // 0 < N <= MAX
  // Điều kiện phải ngược lại 
  if (N <= 0 || N > MAX)
   cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n";

 } while (N <= 0 || N > MAX);
}

// 2. HÀM NHẬP MẢNG
void NhapMang(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  cout << "A[" << i << "]= ";
  cin >> A[i];
 }
}

// 3. HÀM XUẤT MẢNG
void XuatMang(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  cout << A[i] << "\t";
 }
}

// DẠNG ĐẾM
// 1. Khai báo biến đếm
// 2. Duyệt
//  2.1 Nếu
//   tăng đếm
// 3. Trả về kết quả đếm

// 236 * Cho 2 mảng a,b. Hãy cho biết số lần xuất hiện của mảng a trong mảng b
// VD :
// A : 1 2
// B : 1 2 1 2 3
//==> 2
int Dem_Xuat_Hien(int A[], int B[], int Na, int Nb)
{
 int i = 0, j = 0, dem = 0, flag = 0, vt = 0;
 for (i = 0; i < Nb; i++)
 {
  if (B[i] == A[0] && Nb - i >= Na)
  {
   vt = i;
   for (j = 0, flag = 1; j < Na; j++, vt++)
   {
    if (A[j] != B[vt])
    {
     flag = 0;
     break;
    }
   }

   if (flag == 1)
   {
    dem++;
   }
  }
 }
 return dem;
}

int main()
{
 int Na = 0;
 NhapN(Na);

 int A[MAX];
 NhapMang(A, Na);
 cout << "MANG A BAN DAU\n";
 XuatMang(A, Na);
 cout << "\n";
 
 int Nb = 0;
 NhapN(Nb);

 int B[MAX];
 NhapMang(B, Nb);
 cout << "MANG B BAN DAU\n";
 XuatMang(B, Nb);
 cout << "\n";

 int kq = Dem_Xuat_Hien(A, B, Na, Nb);
 cout << "Bai tap 236 la " << kq;

 cout << "\n";
 return 0;
}

Không có nhận xét nào:

Đăng nhận xét