Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Алексей Пахомов Ученик (11), на голосовании 1 год назад
Задача:
Даны два натуральных числа N и K. Требуется вывести все цепочки x1, x2, ..., xN такие, что xi - натуральное и 1 ≤ xi ≤ K.

Входные данные: Вводятся два натуральных числа N и K (N, K ≤ 6).
Выходные данные: Выведите все требуемые цепочки в произвольном порядке – по одной на строке. Никакая цепочка не должна встречаться более одного раза.
Пример ввода: 2 3
Пример вывода:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
Не приходит ничего в голову. Прошу объяснить ваш ответ простыми словами. Заранее всем спасибо
Голосование за лучший ответ
321312 134342423 Знаток (371) 1 год назад
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner( System.in );
int N = scanner.nextInt(); // Длина цепочки
int K = scanner.nextInt(); // Максимальное значение xi
int[] chain = new int[N]; // Массив для хранения цепочки

generateChains(chain, 0, K); // Начинаем генерацию цепочек с первого элемента (индекс 0)
}

// Рекурсивная функция для генерации цепочек
public static void generateChains(int[] chain, int index, int K) {
if (index == chain.length) {
// Если достигли конца цепочки, выводим ее
for (int i = 0; i < chain.length; i++) {
System.out.print(chain[i] + " ");
}
System.out.println();
} else {
// Генерируем числа от 1 до K для текущего элемента цепочки
for (int i = 1; i <= K; i++) {
chain[index] = i; // Записываем число в цепочку
generateChains(chain, index + 1, K); // Рекурсивно генерируем следующий элемент
}
}
}
}
Этот код сначала считывает значения N и K, затем использует рекурсивную функцию generateChains для генерации всех возможных цепочек заданной длины N, где каждый элемент цепочки находится в интервале от 1 до K. Как только цепочка достигает заданной длины, она выводится на экран.

Например, для ввода 2 3, программа выведет все возможные цепочки длиной 2 с числами от 1 до 3, как показано в вашем примере вывода.
Александр Искусственный Интеллект (301635) 1 год назад
пример мало о чём говорящий...
похоже что задание с какого-то буржуйского источника переводили... как могли...
Алексей ПахомовУченик (11) 1 год назад
Это задачи с stepik.org . И да, формулировки там.... нет слов.. Ну либо я слишком тупой, что вполне возможно
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264043) 1 год назад
 import java.util.Scanner; 

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int K = scanner.nextInt();

generateChains(N, K, "");
}

public static void generateChains(int N, int K, String chain) {
if (chain.length() / 2 == N) {
System.out.println(chain);
return;
}

for (int i = 1; i <= K; i++) {
generateChains(N, K, chain + i + " ");
}
}
}
Похожие вопросы