В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История

Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков различного диаметра в порядке возрастания диаметра. Диски можно перекладывать с одного стержня на другой по одному, при этом диск нельзя класть на диск меньшего диаметра. Необходимо переложить всю пирамидку со стержня 1 на стержень 3 за минимальное число перекладываний.

Напишите программу, которая решает головоломку; для данного числа дисков n печатает последовательность перекладываний в формате a b c, где a — номер перекладываемого диска, b — номер стержня с которого снимается данный диск, c — номер стержня на который надевается данный диск.

Например, строка 1 2 3 означает перемещение диска номер 1 со стержня 2 на стержень 3. В одной строке печатается одна команда. Диски пронумерованы числами от 1 до n в порядке возрастания диаметров.

Программа должна вывести минимальный (по количеству произведенных операций перекладывания пирамидки из данного числа дисков.
На питоне

Показать ответ
Ответ:
Mikich2
Mikich2
30.09.2020 13:55

Привет, код ниже, для справки по функциям советую посетить MSDN.
Если остаются вопросы так же есть хороший сайт как METANIT, там ты можешь найти простые примеры и простую документацию.
Если хочется проверить работаю кода, то есть прекрасный ресурс как Repl It.
Если есть вопросы, пиши в комментариях. За дополнительной информацией пиши в ЛС.

за отметку "Лучшее решение" и нажатую кнопочку и у меня в профиле.
Так же в моем профиле вы можете найти полезные ссылки на ресурсы описанные выше.



using System;

class MainClass {
  public static int (int[] array)
  {
    int result = 1;
   
    foreach (int element in array)
    {
      if (0 > element)
      {
        result *= element;
      }
    }
   
    return result;
  }

  static void Main()
  {
    Console.WriteLine("Please, enter length of array: ");
    int sizeOfArray = Convert.ToInt32(Console.ReadLine());
   
    int[] array = new int[sizeOfArray];
   
    for (int i = 0; i < sizeOfArray; ++i)
    {
      Console.WriteLine("Please, enter array entry: ");
      array[i] = Convert.ToInt32(Console.ReadLine());
    }
   
    int productOfNegativeNumbers = (array);
    Console.WriteLine("Product of negative numbers is: {0}", productOfNegativeNumbers);
  }
}
0,0(0 оценок)
Ответ:
Jonson2002
Jonson2002
25.02.2020 20:24

70, 35, 43, 132, 121, 11, 60, 64, 24, 31

Объяснение:

1) Изначально s = 0, затем на каждой из 12 – 6 + 1 = 7 итераций к ней прибавляется 10, итого получится 70

2) Аналогично, s = 0 + 7 * (8 – 3) = 35

3) Итерация с i = 1: k = 2 * 4 + 1 = 9. Итерация с i = 2: k = 2 * 9 + 2 = 20. Итерация с i = 3: k = 2 * 20 + 3 = 43.

4) s = 0 + 12 * 11 = 132  

5) s = 0 + 11 * (12 – 1) = 121

6) u = 26 – 1 – 2 – 3 – 4 – 5 = 11

7) s = 4 + 5 + … + 11 = 60

8) s = 1 * 2 * 2 * … * 2 (8 – 3 + 1 раз) = 64

9) y = 0 + 4 * 1 + 4 * 2 + 4 * 3 = 24

10) s = 3 + 2 * 2 + 2 * 3 + 2 * 4 + 2 * 5 = 31

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота