Для начала отметим, что переправа не состоится только в одном случае : если число разбойников будет превышать число купцов на берегу.
Итак, пусть берег, на котором стоят три купца и три разбойника , будет называться первым, а берег на который нужно перебраться - вторым. Попробуем вместить в двухместную лодку двух купцов, тогда на первом берегу останется 1 купец и 3 забойника, по условию это недопустимо, идем дальше: в лодку садятся один купец и один разбойник, на берегу остаются два купца и два разбойника, этот расклад нам подходит с него и начнем.
1 рейс- в лодку садятся 1 купец и 1 разбойник и переправляются на второй берег, на нем оставим купца(1 разбойник всегда будет находиться в лодке и переправлять остальных) На первом берегу 2 купца, 2 разбойника(2к;2р)
2 рейс - возвращение к первому берегу
3 рейс- в лодку садится 1 разбойник, т. к. если сядет 1 купец то разбойников на первом берегу будет больше, переправа на второй берег (2к;1р)
4 рейс - возвращение
5 рейс - в лодку садится 1 купец, (1к;1р), переправа
6 рейс - возвращение
7 рейс -в лодку садится 1 разбойник (1к;0 р), переправа
8 рейс - возвращение
9 рейс - в лодку садится 1 купец (0к;0р), переправа 1 купца и 1 разбойника
ответ:Переправа состоялась за 9 рейсов, пострадавших не обнаружено.
как то так)
#include <pch.h>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUSSIAN");//Добавление русского языка
system("color F0");//Замена цвета экрана на белый и текста на черный
int A, B, A1, B1, A2, B2, A3, B3; //Добавление переменных
cout << "Введите результаты первого взвешивания" << endl; //Приглашение к вводу
cin >> A1 >> B1; //Ввод
cout << "Первое взвешивание: " << A1 << " - " << B1 << endl; //Эхо-контроль
if ((A1 < 0) || (B1 < 0))
{
cout << "Ошибка. Введите натуральное число" << endl;
return 1; //Выход по ошибке 1
}
cout << "Введите результаты второго взвешивания" << endl; //Приглашение к вводу
cin >> A2 >> B2; //Ввод
cout << "Второе взвешивание: " << A2 << " - " << B2 << endl; //Эхо-контроль
if ((A2 < 0) || (B2 < 0))
{
cout << "Ошибка. Введите натуральное число" << endl;
return 2; //Выход по ошибке 2
}
cout << "Введите результаты третьего взвешивания" << endl; //Приглашение к вводу
cin >> A3 >> B3; //Ввод
cout << "Третье взвешивание: " << A3 << " - " << B3 << endl; //Эхо-контроль
if ((A3 < 0) || (B3 < 0))
{
cout << "Ошибка. Введите натуральное число" << endl;
return 3; //Выход по ошибке 3
}
//Вычисления
A = A1 - A3;
B = B1 - B2;
cout << "Первый математик собрал: " << A << endl <<
"Второй математик собрал: " << B << endl; //Вывод результатов
return 0; //Штатный выход
} //end main
Объяснение:
выходит что-то в этом духе в Visual Studio Express 2017
Не совсем понял вот этот момент в задаче: "В i-й строке (1 ≤ i ≤ 3) записаны целые числа ai и bi (0 ≤ ai, bi ≤ 10 000)."
если надо сделать через цикл или что-то изменить - пиши