Программирование на языке высокого уровня
Однорукий бандит
У ковбоев только один час…
Домашнее задание
1.25M
Категория: ПрограммированиеПрограммирование

Моделирование процессов

1. Программирование на языке высокого уровня

Богатов Р.Н.
Программирование
на языке высокого уровня
Лекция 14.
Моделирование процессов
Кафедра АСОИУ ОмГТУ, 2013

2. Однорукий бандит

// дано: выигрыши v1, v2 и их вероятности p1, p2
v;
for int
(intx,i y,
= 0;
i < Подходов; i++)
double z = r.NextDouble();
{
if (z <= p1) // джекпот
int остаток = Начальный_капитал, игр = 0;
{
do x = 0; y = 7;
{
v = 5 * v1;
int v;
}
else double z = r.NextDouble();
if
+ p2)
// средний выигрыш
if (z
(z <=
<=p1
p1)
// джекпот
{
v = 5 * v1;
x
else = y = r.Next(10);
vif
= (z
5 * <=
v2;p1 + p2) // средний выигрыш
}
v = 5 * v2;
else // проигрыш
else
{
v = -5;
for (; ; )
остаток
+= v;
{
игр++; x = r.Next(10);
} while (остаток
>= 5 &&
y = r.Next(9);
остаток
<= y)
Начальный_капитал);
if (x <=
y++;
}
if (!(x == 0 && y == 7)) break;
}
v = -5;
}
money += v;
bank -= v;

3. У ковбоев только один час…

bool forward()
{
bool[]
forset;
(int i = 0; i < 3; i++)
int[] Tif= (set[i])
new int[] { 5, 10, 20, 25 };
int
time;for (int j = i+1; j <4; j++)
if (set[j])
{
private void button1_Click(object
sender, EventArgs e)
set[i] = set[j] = false;
{
time += Math.Max(T[i], T[j]);
set = new bool[]
true, true,
true,
true };
if {
(!(set[0]
|| set[1]
|| set[2]
|| set[3]))
time = 0;
if (time <= 60) return true;
else
if (!forward())
for (int k = 0;
k <4; k++)
MessageBox.Show("Никакого
способа
переправы нет!",
if (!set[k])
"Конец полного перебора");
{
}
set[k] = true;
time += T[k];
...
if (forward())
return true;
set[k] = false;
time -= T[k];
}
time -= Math.Max(T[i], T[j]);
set[i] = set[j] = true;
}
return false;
}
Четыре ковбоя убегают от индейцев и оказываются у
пропасти, через которую перекинут старый верёвочный мост.
Идти по нему можно только с лампой, которая имеется в
единственном экземпляре, и выдержать мост может только
двоих. Силы у ковбоев на исходе, и чтобы переправиться,
им требуется по 25, 20, 10 и 5 мин. каждому соответственно.
Успеют ли ковбои переправиться за один час?
Пример переправы:
max(5, 10) + 5 + max(5, 20) + 5 + max(5, 25) = 65 мин.

4. Домашнее задание

• Вычислить, сколько минимум дней понадобится
путнику, чтобы переправиться через пустыню длиной
S км, если за день он может пройти всего 20 км, а еды
может взять с собой только на три дня пути. Склады
провизии можно делать только в местах ночлега (т.е.
через каждые 20 км).
English     Русский Правила