Язык программирования - c++, компилятор - codeblocks С функции insert() можно добавить заданный фрагмент в любое место строки. Первым параметром функции является номер начальной позиции для фрагмента (нумерация начинается с 0), вторым - фрагмент. Функция изменяет исходную строку. #include <iostream> #include <string> using namespace std; int main() { string s = "", s1; int k; cin >> k; // (комментарий) с какого символа добавляем. getline(cin, s) // (комментарий) считываем начальную строку getline(cin, s1); // строка, которую добавим в начальную s1.insert(k, s1); // добавили cout << s; // вывели результат return 0; } конец) можешь просто в тетрадку переписать и показать учителю)
Изобразим все возможные коды длиной не больше 4 в виде дерева (см. рис.)
Красным цветом помечены вершины, которым соответствуют уже занятые коды. Условие Фано запрещает одному коду быть префиксом (началом) другого, желтым цветом отмечены коды, выбор которых будет противоречить условию Фано (например, если занят код 0010, то нельзя выбрать коды 0, 00, 001).
Оставшиеся не закрашенными коды доступны для выбора, они удовлетворяют условию Фано, а значит, код будет допускать однозначное декодирование. По рисунку видно, что наименьшая длина кода равна 3, есть два варианта: 100 и 010. В ответ пойдёт более правый код, у него числовое значение меньше.
С функции insert() можно добавить заданный фрагмент в любое место строки. Первым параметром функции является номер начальной позиции для фрагмента (нумерация начинается с 0), вторым - фрагмент. Функция изменяет исходную строку.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "", s1;
int k;
cin >> k; // (комментарий) с какого символа добавляем.
getline(cin, s) // (комментарий) считываем начальную строку
getline(cin, s1); // строка, которую добавим в начальную
s1.insert(k, s1); // добавили
cout << s; // вывели результат
return 0;
}
конец) можешь просто в тетрадку переписать и показать учителю)
010
Объяснение:
Изобразим все возможные коды длиной не больше 4 в виде дерева (см. рис.)
Красным цветом помечены вершины, которым соответствуют уже занятые коды. Условие Фано запрещает одному коду быть префиксом (началом) другого, желтым цветом отмечены коды, выбор которых будет противоречить условию Фано (например, если занят код 0010, то нельзя выбрать коды 0, 00, 001).
Оставшиеся не закрашенными коды доступны для выбора, они удовлетворяют условию Фано, а значит, код будет допускать однозначное декодирование. По рисунку видно, что наименьшая длина кода равна 3, есть два варианта: 100 и 010. В ответ пойдёт более правый код, у него числовое значение меньше.