В очереди стоят мальчики и девочки. В начале каждой минуты, если за каким-то мальчиком стоит девочка, то он меняется с ней местами, пропуская ее вперед (при этом общее количество ребят в очереди не меняется).
Вам дана очередь в виде последовательности букв M и D (начало очереди слева), определите, как она будет выглядеть через 10 минут.
MMDMDDDDDMMDDDMDDDMD
В качестве ответа выведите строку из заглавных латинских букв M и D (не разделяя их пробелами).
Другие языки программирования и технологии
Вопрос по олимпиаде по информатике!! Помогите плиз
0 = MMDMDDDDDMMDDDMDDDMD
1 = MDMDMDDDDMDMDDDMDDDM
2 = DMDMDMDDDDMDMDDDMDDM
3 = DDMDMDMDDDDMDMDDDMDM
4 = DDDMDMDMDDDDMDMDDDMM
5 = DDDDMDMDMDDDDMDMDDMM
6 = DDDDDMDMDMDDDDMDMDMM
7 = DDDDDDMDMDMDDDDMDMMM
8 = DDDDDDDMDMDMDDDDMMMM
9 = DDDDDDDDMDMDMDDDMMMM
10 = DDDDDDDDDMDMDMDDMMMM
Const s = "MMDMDDDDDMMDDDMDDDMD"
Dim m(1 To Len(s)) As String
For i = 1 To Len(s)
m(i) = Mid(s, i, 1)
Next i
For i = 0 To 10
Debug.Print i & " = " & Join(m, "")
For j = 1 To Len(s) - 1
If m(j) = "M" And m(j + 1) = "D" Then m(j) = "D": m(j + 1) = "M": j = j + 1
Next j
Next i
1 = MDMDMDDDDMDMDDDMDDDM
2 = DMDMDMDDDDMDMDDDMDDM
3 = DDMDMDMDDDDMDMDDDMDM
4 = DDDMDMDMDDDDMDMDDDMM
5 = DDDDMDMDMDDDDMDMDDMM
6 = DDDDDMDMDMDDDDMDMDMM
7 = DDDDDDMDMDMDDDDMDMMM
8 = DDDDDDDMDMDMDDDDMMMM
9 = DDDDDDDDMDMDMDDDMMMM
10 = DDDDDDDDDMDMDMDDMMMM
Const s = "MMDMDDDDDMMDDDMDDDMD"
Dim m(1 To Len(s)) As String
For i = 1 To Len(s)
m(i) = Mid(s, i, 1)
Next i
For i = 0 To 10
Debug.Print i & " = " & Join(m, "")
For j = 1 To Len(s) - 1
If m(j) = "M" And m(j + 1) = "D" Then m(j) = "D": m(j + 1) = "M": j = j + 1
Next j
Next i
Это задача на сортировку пузырьком, с той модификацией, что в случае обмена надо скакнуть на шаг вперед, и сортировка не полная, а строго 10 итераций. Помогло?
Алексей Мельчаков
мне решение надо

Алексей Мельчаков
и че это такое?
#include
#include
using namespace std;
int main()
{
string Queue;
cin >> Queue;
for (int i = 0; i < 10; i++)
{
for (int x = 0; x < Queue.length() - 1; x++)
{
//Если текущая буква = M и следующая = D то меняем их местами и перепрыгиваем на итерацию вперёд
if (Queue[x] == 'M') if (Queue[x + 1] == 'D') {
swap(Queue[x], Queue[x + 1]); x++;
}
}
}
cout << Queue << endl;
system("pause");
}
#include
using namespace std;
int main()
{
string Queue;
cin >> Queue;
for (int i = 0; i < 10; i++)
{
for (int x = 0; x < Queue.length() - 1; x++)
{
//Если текущая буква = M и следующая = D то меняем их местами и перепрыгиваем на итерацию вперёд
if (Queue[x] == 'M') if (Queue[x + 1] == 'D') {
swap(Queue[x], Queue[x + 1]); x++;
}
}
}
cout << Queue << endl;
system("pause");
}
Похожие вопросы
- Вопрос связан с олимпиадой по информатике! (Нужные знания языков pascal или c++)
- Обязательно ли выигрывать международные олимпиады по информатике чтобы быть востребованным специалистом сфере IT?
- Помогите ответить на вопросы к тесту по информатике!
- *олимпиада*по информатике*
- Кто поможет, плиз, перевести изображение текста в ворд (у меня нет файнридера) ?
- Для тех кто разбирается в Turbo Pascal 7.0 помогите плиз))))
- Помогите плиз задолбала эта ошибка!
- Помогите плиз поставить загрузку с CD
- Помогите плиз!!Задача в Паскале
- Дана матрица размером NxM. Упорядочить ее строки по неубыванию их наибольших элементов. в делфи помогите плиз срочно