• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pytanie - Program CanConstruct

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
34 wizyt
pytanie zadane 6 dni temu w C i C++ przez Dani Użytkownik (650 p.)

Witam, mam problem z tym programem, wyświetla złe wyniki. Wie może ktoś dlaczego? Zadanie typu CanConstruct. Mamy podany string a i vector b. Używając elementów z vectora próbujemy utworzyć wyraz a, jeśli można go ułożyć wyrzucamy true, inaczej false.

#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
//unordered_map<string, bool> memo;
bool canConstruct(string target, vector<string> wordBank, unordered_map<string, bool> &memo)
{
    if (target == "")
        return true;
    if (memo.find(target) != memo.end())
        return memo[target];

    for (string word : wordBank) {
        if (target.find(word, 0) == 0 && target.find(word, 0) != string::npos) {
            string suffix = target; suffix.erase(0, word.length());
            if (canConstruct(suffix, wordBank,memo) == true)
                memo[target] = true;
                return true;
        }
    }
    memo[target] = false;
    return false;
}
int main()
{
    //TEST CASES:
    unordered_map<string, bool> memo;
    //cout << canConstruct("abcdef", { "ab","abc","cd","def","abcd" },memo) << '\n';
    cout << canConstruct("skateboard", { "bo","rd","ate","t","ska","sk","boar" }, memo) << '\n';
    cout << canConstruct("enterapotentpot", { "a","p","ent","enter","ot","o","t" }, memo) << '\n';
    cout << canConstruct("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeef", {
        "e",
        "ee",
        "eee",
        "eeee",
        "eeeee",
        "eeeeee"
        }, memo);

}

 

1 odpowiedź

0 głosów
odpowiedź 6 dni temu przez Whistleroosh Nałogowiec (37,700 p.)
wybrane 6 dni temu przez Dani
 
Najlepsza
1) Linia 18 i 19 powinny być wewnątrz klamry.

2) Musisz czyścisz mapę pomiędzy kolejnymi wywołaniami canConstruct w main

Podobne pytania

0 głosów
2 odpowiedzi 215 wizyt
0 głosów
1 odpowiedź 358 wizyt
pytanie zadane 26 marca 2017 w C i C++ przez szym3ns Użytkownik (860 p.)

90,310 zapytań

138,910 odpowiedzi

311,123 komentarzy

60,024 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...