двумерный массив в рекурсивном классе java

241
04 декабря 2017, 17:09

есть заполненный числовой двумерный массив А[N][W] (по условию верхняя строка нули, а справа внизу максимум) и вектор w[N], и требуется следуя из крайней правой нижней точки переместиться к следующему значению по правилам:

  1. если A[k][s] == 0 то завершить выполнение класса;
  2. если A[k][s] == A[k-1][s] то выполнить заново для k-1;
  3. в ином случае записать номер строки в вывод и выполнить заново для k-1 и s-w[k].

пытался сделать так, но выдает ошибки при обращении к классу:

String res = new String();
res = null;
int k = N;
int s = W;
res = Num(A[N][W],k,s,w[N-1],res);
 private static String Num(int A[][], int k, int s, int w[], String res)                  {
        if (A[k][s] == 0) {
        }
        if (A[k][s] == A[k-1][s]) {
            Num(A[k-1][s],k-1,s,w[k-1],res);
        }
        else {
            int d = w[k];
            Num(A[k-1][s],k-1,s-d,w[k-1],res);
            res = res + k;
        }
        return res;
  }
Answer 1

Для начала первая ошибка:

если A[k][s] == 0 то завершить выполнение класса;

не класса, а метода (это к терминологии).

if (A[k][s] == 0) {
}

тут вы не завершаете метод, а просто ничего не делаете. Тут 2 варианта как при этом условии выйти:

if (A[k][s] == 0) {
     return res;
}
Num(A[k-1][s],k-1,s-d,w[k-1],res);

Таким вызовом метода вы передаете не массивы, а элементы массива. В первом и предпоследнем аргументе.

Как поправить - передавать массив а не элемент:

private static String Num(int A[][], int k, int s, int w[], String res){
    if (A[k][s] == 0) {
    }
    if (A[k][s] == A[k-1][s]) {
        Num(A,k-1,s,w,res);
    }
    else {
        int d = w[k];
        Num(A,k-1,s-d,w,res);
        res = res + k;
    }
    return res;
}
READ ALSO
Стилизация андроид Приложения

Стилизация андроид Приложения

В приложения программно (Java коде) вывожу несколько LinearLayoutНе как не могу поставить программно этому LinearLayout фон имеющего drawable

298
Не завершается выполнение Java программы

Не завершается выполнение Java программы

Есть такой простой код с потоками:

220
Не могу запустить java.exe из командной строки (cmd)

Не могу запустить java.exe из командной строки (cmd)

Не могу запустить javaexe из командной строки (cmd)

285
Запуск java класс из командной строки

Запуск java класс из командной строки

У меня есть готовый проект написанный в NetBeans с 3-мя классамиКак мне скомпилировать и запустить из командной строки все это? к примеру есть...

310