Две семьи (в каждой семье есть папа, мама и дочь) хотят переправиться через реку. У них есть лодка, в которой может переправиться два человека, причем грести могут только мужчины (то есть в лодке всегда должен плыть хотя бы один папа). Дочки могут плыть в лодке или оставаться на берегу только с кем-либо из своих родителей. Как им всем переправиться на другой берег? Составьте план перевозки, в котором должно быть указано, кто переправляется в лодке каждый раз.
ответ на эту задачу необходимо записать в виде нескольких строк, каждая строка соответствует одной переправе. Нечётные строки соответствуют переправам с первого берега (на котором первоначально находятся люди) на второй берег, чётные строки соответствуют переправе в обратном направлении. В каждой строке должны быть указаны один или два человека через запятую. Переправляющиеся люди обозначаются строками П1, М1, Д1, П2, М2, Д2, обозначающих папу, маму, дочку из первой семьи, папу, маму, дочку из второй семьи.
Например, следующая запись:
П1, М2
П1
обозначает, что папа из первой семьи и мама из второй семьи переправляются через реку, затем папа из первой семьи возвращается обратно.
Чем меньше переправ будет в вашем алгоритме, тем больше вы получите.
В этой задаче решение принимается на проверку во время олимпиады, если запись ответа удовлятворяет условию задачи, все переправы корректны и удовлетворяют условию задачи. При этом не проверяется то, что задание выполнено, то есть все люди переправились.
#include <iostream>
#include <ctime>
using namespace std;
double running_avg(double i);
void main()
{
setlocale(LC_ALL, "RU");//русский язык
clock_t t1, t2;
t1 = clock() / 1000;//начало отсчета(в секундах)
double num;
while (true)
{
t2 = clock() / 1000;
cout << "Введите значение (для выхода введите любой знак или дождитесь 60 секунд от запуска программы)\n";
if (!(cin >> num) || (t2 - t1 > 60)) break;//конец отсчета
cout << "Среднее значение всех чисел равно: " << running_avg(num) << "\n\n\n";
}
}
double running_avg(double i) {
static double sum = 0;//при каждом новом вызове функции значения sum и count сохраняются
static int count = 0;
sum = sum + i;
count++;
return sum / count;//среднее значение
}
/*cpp-файл в закрепе*/
Примерно так
#include <iostream>
#include <chrono>
#include <ctime>
int main()
{
auto start = std::chrono::system_clock::now();
auto end = std::chrono::system_clock::now();
bool Cycle = true;
double SredSum=0;
std::time_t end_time;
double Entered = 0, count = 0;
setlocale(LC_ALL, "Russian");
std::cout.precision(5);
std::chrono::duration<double> elapsed_seconds = end - start;
do {
std::cin >> Entered;
if (std::cin.fail()){
Cycle = false;
break;
}
end = std::chrono::system_clock::now();
elapsed_seconds = end - start;
SredSum = ((SredSum * count) + Entered) / (count + 1.0);
count++;
std::cout << "Среднее значение этих " << count << " чисел равно " << SredSum << std::endl;
if (elapsed_seconds.count() > 60) { Cycle = false; }
} while (Cycle);
}