Top.Mail.Ru
Ответы

Помогите решить срочно задачу

Имеется калькулятор, который выполняет три операции:
1. Прибавить к числу X единицу.
2. Умножить число X на 2.
3. Умножить число X на 3.
Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N. Также вывести последовательность операций, например 1,2,3.

По дате
По рейтингу
Аватар пользователя
Профи
6лет

Если еще актуально

public class Клькулятор {
public static void main(String[] args) {
int N = 10;
find(N);
}

private static void find(int N) {
int[] a = new int[N + 1];
int min;
for (int i = 2; i < N + 1; i++) {
min = a[i - 1] + 1;
if (i % 2 == 0)
min = Math.min(min, a[i / 2] + 1);
if (i % 3 == 0)
min = Math.min(min, a[i / 3] + 1);

a[i] = min;
}
StringBuilder ret = new StringBuilder();
int i = N;
while (i > 1) {
if (a[i] == a[i - 1] + 1) {
ret.insert(0, (i - 1) + " ");
i--;
continue;
}

if (i % 2 == 0 && a[i] == a[i / 2] + 1) {
ret.insert(0, (i / 2) + " ");
i /= 2;
continue;
}

ret.insert(0, (i / 3) + " ");
i /= 3;
}

System.out.println(a[N]);
System.out.println(ret.append(N));
}
}

Аватар пользователя
Искусственный Интеллект
8лет

как тут джававиновата?