Jak sprawdzić czy tablica B zawiera się w tablicy A

0

Jak sprawdzić czy tablica B zawiera się w tablicy A w całości bez naruszania kolejności elementów tablicy B?
np dla A={1,2,2,2,3,4,4,4,5,8,10}, B={2,2,3,4,4,}

1

Tablica B zawsze zawiera się w tablicy B.

Jeśli pytanie było czy B zawiera się w A, to użyj search z <algorithm>

auto it = search(begin(A), end(A), begin(B), end(B));

Po edycji pytanie dotyczy tylko C, zrobiłbym jakiegoś fora

#define SIZE_A 10
#define SIZE_B 4

bool search(int*a, int*b)
{
    for(int i = 0; i < SIZE_A - SIZE_B; ++i)
        if(memcmp(a+i, b, sizeof(*a) * SIZE_B) == 0)
            return true;
    return false
}

Pisane na kolanie, ale powinno działać.

0

Obecnie mam następujący kod, ale wypisuję elementy które się powtarzają w drugiej tablicy i ilość razy. Chciałbym przyjąć, że tablice są posortowane niemalejąco.

#include <cstdlib>
#include <iostream>

using namespace std;

int tab1[6] = {1,2,3,3,4,5};
int tab2[6] = {2,3,4};
int tab_odp[6]; 

int main(int argc, char *argv[])
{
    for (int i = 0;i<6;i++) tab_odp[i] = 0;
    
    for (int i = 0;i<6;i++)
    {
        for (int j = 0;j<6;j++)
        {
            if (tab1[i] == tab2[j])
            {
               tab_odp[i] += 1;
            }
        }
    }

    for (int i = 0;i<6;i++) cout << "Cyfra: " << tab1[i] << "wystepuje w tab2: " << tab_odp[i] << " razy" << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Tutaj raczej chyba chodzi o jakis szybszy algo niz sma implementacje. Zacznij tak: znadz wielkosc B, sprawdzasz po kolei w A czy pierwszy element pasuje, przechodzisz do ostatniego elementu B i sprawdzasz offset w A czy ma taka sama liczbe, poznej idziesz na drugi element w B i sprawdzasz jego miejsce w A, itd, itd.

0

Tak się zastanawiam, ale nie wiem czy dobrze myślę, że należy sprawdzić czy druga tablica jest podzbiorem pierwszej. Ale co w sytuacji kiedy:

A = { 1, 2, 3, 2, 5, 6, 2 } B= { 2, 2, 2 }
0

Wtedy wypada zwrócić informację, że zbiór A nie może zawierać się z B.
To pytanie wymusza sprawdzenie, czy zależność jest możliwa do spełnienia.

0
coffeina napisał(a):

Ale co w sytuacji kiedy:

A = { 1, 2, 3, 2, 5, 6, 2 } B= { 2, 2, 2 }

A co ma być? Nigdzie nie pisałeś, że kolejność elementów ma znaczenie – B jest podzbiorem A.

0

Napisałem:

tablica B zawiera się w tablicy A w całości bez naruszania kolejności elementów tablicy B?
0

Ja też nigdzie nie pisałem o naruszaniu zawartości tablicy B.

1 użytkowników online, w tym zalogowanych: 0, gości: 1