Проблемы с std :: cin? Что здесь происходит?? стандартное и жестко закодированное значение - PullRequest
0 голосов
/ 11 ноября 2018

После полудня все, так что я работаю над проблемой резки стержня. Кто-нибудь знает, почему этот код работает, когда n жестко запрограммирован на 7 или какое-то другое число в main, но когда я перехватываю n через std: cin, он не работает и выдает неправильный вывод ... Что здесь происходит? Вот результат установки в главном int n = 7 18 1 6 -1 При использовании стандартного ввода для получения n = 7 я получаю это: 35 1 1 1 1 1 1 1 -1 Прайс-лист одинаков в обоих случаях .... 1 5 8 9 10 17 17

#include <iostream>
#include <cstring>
using namespace std;

const int A = 1000;
int p[A];
int r[A], s[A];
void init() {
    p[0] = 0;
    p[1] = 1;
    p[2] = 5;
    p[3] = 8;
    p[4] = 9;
    p[5] = 10;
    p[6] = 17;
    p[7] = 17;
    p[8] = 20;
    p[9] = 24;
    p[10] = 30;
    }

int extendedButtomUpCutRod(int n) {
    for (int j = 1; j <= n; ++j) {
        int q = -2145631872;
        for (int i = 1; i <= j; ++i)
            if (q < p[i] + r[j - i]) {
                q = p[i] + r[j - i];
                s[j] = i;
            }
         r[j] = q;


    }
    return r[n];
}

// prins the extended method's output
void printCutRodSoln(int n) {
    do
        cout << s[n] << " ";
    while ((n -= s[n]) > 0);
}

int main(){
    init();
    r[0] = 0;
    //int n = 7; //works when this is used.
    int n;
    std::cin >> n; //doesnt work when this is used?


    for(int i = 0; i <= n; i++){
        std::cin >> p[i];
    }
    cout << extendedButtomUpCutRod(n) << endl;
    printCutRodSoln(n);
    std::cout << "-1"<< std::endl;

}

1 Ответ

0 голосов
/ 11 ноября 2018

Комментарии помогли, но здесь была точная строка. что нужно изменить ... для (int i = 1; i <= n; i ++), я = 1 исправил это во всех тестовых случаях. Прайс-лист был выключен. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...