Problem z pseudo kodem

0

Cześć, tak wygląda pseudo kod:

Test(p, k, n)
begin
A := {1};
j := 1;
for i := 2 to n do
    if p[i] ≥ k[j] then
      begin
          A := A ∪ {i};
          j := i;
    end;
  return A;
end;

A moj kod tak:

int Test(int p[],int k[], int n){
   int A={1};
   int j=1;
   int i;
   for(i=2; i<n; ++i){
        if(p[i]>=k[j]){
            // tu nie wiem
            j=i;
        }
   }
    return A;
}

Jak mogę uporać się z tą linijką z pseudo kodu: A := A ∪ {i}; w moim kodzie?

2

Zgaduje, że to suma zbiorów, a A jest zainicjolizowane jednym elementem, więc jej rozmiar to 1, zrób z A vector i pushuj do niego.

#include <vector>

using namespace std;

int* test(int p[],int k[], int n){
   vector<int> A(1,1);
   int j=1;
   int i;
   for(i=2; i<n; ++i){
        if(p[i]>=k[j]){
            A.push_back(i);
            j=i;
        }
   }
   return A.data();
}
0

Pytanie, co znaczy, w tym pseudokodzie, to: A ∪ {i};?

3

Najwyraźniej A to zbór (lub inny kontener).
Trzeba jeszcze uważać, że pseudo kod jest indeksowany po humanistycznemu.

auto Test(const std::vector<int>& p, const std::vector<int>& k) // n ukrywa się jako rozmiar p
{
    std::set<int> A{0};
    auto j = 0;
    for (auto i = 1; i < p.size(); ++i) {
        if (p[i] >= k[j]) {
             A.insert(i);
             j = i;
        }
    }
    return A;
}

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