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

problem - bestSum

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+1 głos
78 wizyt
pytanie zadane 1 dzień temu w C i C++ przez Dani Użytkownik (650 p.)
#include <iostream>
#include <vector>
#include <optional>

using namespace std;

optional<vector<int>> dp[10000+5];
optional<vector<int>> bestSum(int targetSum,vector<int> numbers) {
    for (int i = 0; i <= targetSum; ++i) {
        dp[i] = nullopt;
    }
    dp[0] = {};

    for (int i = 0; i <= targetSum; ++i) {
        if (dp[i] != nullopt) {
            for (int num : numbers) {
                optional<vector<int>> combination = dp[i];
                if (!dp[i+num] || dp[i + num]->size() > combination->size()) {
                    dp[i + num] = combination;
                }
            }
        }
    }
    return dp[targetSum];
}

int main()
{
    optional<vector<int>> a = bestSum(7, { 5,3,4,7 });
    cout << a.has_value();
    /*for (int x : *a)
        cout << x << ' ';*/
}

Cześć napisałem program bestSum używając tabulacji, jednak wynik jest zły. Wiecie może co mogłem przeoczyć?

1
komentarz 1 dzień temu przez adrian17 Ekspert (327,560 p.)

program bestSum

To... nic nikomu nie mówi ;)

A patrząc na kod - masz 10k vectorów, ale nigdy w ogóle nic do żadnego nie piszesz...?

komentarz 1 dzień temu przez reaktywny Nałogowiec (30,230 p.)

To... nic nikomu nie mówi ;)

Mnie nie mówi, jestem ciekaw o co tu biega :)

2 odpowiedzi

0 głosów
odpowiedź 1 dzień temu przez reaktywny Nałogowiec (30,230 p.)
A co ten program ma liczyć, co to jest target sum, a czym jest best sum??
0 głosów
odpowiedź 1 dzień temu przez Great Stary wyjadacz (10,140 p.)

Przydałby się jakikolwiek opis kodu i jego przeznaczenia, ale możemy zgadywać na ślepo:

for (int i = 0; i <= targetSum; ++i) {
    dp[i] = nullopt;
}
dp[0] = {}; // dp[0] = std::vector<int>{};

Wszystkim elementom tablicy dp ustawiasz wartość na std::nullopt. Następnie pierwszemu elementowi przypisujesz wartość domyślną dla std::optional, czyli znowu std::nullopt. Nie chciałeś przypadkiem utworzyć pustego vectora?

Skoro chcesz używać tabulacji to czy nie powinieneś wstawiać liczb z wektora numbers (lub używać ich w jakiś inny sposób zgodny z zadaniem)?

if (!dp[i + num] || dp[i + num]->size() > combination->size()) {
    dp[i + num] = combination;
    dp[i + num]->emplace_back(num);
}

Nie znaleziono podobnych pytań

90,295 zapytań

138,894 odpowiedzi

311,078 komentarzy

60,009 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.

...