Дан массив из 13 целых чисел. Составить программу, которая заполняет массив, задвая значения элементам по формуле a(i):=i*4+3, Элементы массива выводятся в столбец с комментариями. "(" и ")" - квадратные скобки Язык- Паскаль
Используем бэктрекинг (англ. backtracking - обратное прослеживание). Необходимо оставить противнику 1 фишку с тем, чтобы он был вынужден взять её и проиграть. Для этого надо самому иметь позицию, в которой имеется от 2 до 5 фишек (чтобы взяв допустимый 1-4 фишки, оставить одну). Чтобы вынудить противника оставить 2-5 фишек, надо создать ему позицию с 6 фишками (6-1=5, 6-4=2). Позицию с 6 фишками мы можем создать, имея 7-10 фишек. Исходное количество фишек - 11. Если первый ход у противника, он забирает от 1 до 4 фишек и предоставляет нам как раз необходимые для выигрыша 7-10 фишек. Итак, при первом ходе противника нашей стратегией будет оставить противнику шесть фишек, а затем одну. Если первый ход наш, то при правильной игре противника выигрыш невозможен. При неправильной - стараться перейти к выигрышной стратегии (6 и 1 фишка).
var w1, w2: string; m: set of char; c: char; i: integer;
begin Writeln('Введите первое "слово"'); Readln(w1); Writeln('Введите второе "слово"'); Readln(w2); m := []; w1 := LowerCase(w1);w2 := LowerCase(w2); for i := 1 to length(w1) do if w1[i] in gl then Include(m, w1[i]); for i := 1 to length(w2) do if w2[i] in m then Exclude(m, w2[i]); Writeln('Гласные, присутствующие в первом слове и отсутствующие во втором:'); foreach c in m do Write(c, ' '); Writeln end.
Тестовое решение: Введите первое "слово" Дай, Джим, на счастье лапу мне! Введите второе "слово" Сергей Есенин Гласные, присутствующие в первом слове и отсутствующие во втором: а у
Необходимо оставить противнику 1 фишку с тем, чтобы он был вынужден взять её и проиграть. Для этого надо самому иметь позицию, в которой имеется от 2 до 5 фишек (чтобы взяв допустимый 1-4 фишки, оставить одну).
Чтобы вынудить противника оставить 2-5 фишек, надо создать ему позицию с 6 фишками (6-1=5, 6-4=2).
Позицию с 6 фишками мы можем создать, имея 7-10 фишек.
Исходное количество фишек - 11. Если первый ход у противника, он забирает от 1 до 4 фишек и предоставляет нам как раз необходимые для выигрыша 7-10 фишек.
Итак, при первом ходе противника нашей стратегией будет оставить противнику шесть фишек, а затем одну.
Если первый ход наш, то при правильной игре противника выигрыш невозможен. При неправильной - стараться перейти к выигрышной стратегии (6 и 1 фишка).
gl = ['а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я'];
var
w1, w2: string;
m: set of char;
c: char;
i: integer;
begin
Writeln('Введите первое "слово"');
Readln(w1);
Writeln('Введите второе "слово"');
Readln(w2);
m := [];
w1 := LowerCase(w1);w2 := LowerCase(w2);
for i := 1 to length(w1) do
if w1[i] in gl then Include(m, w1[i]);
for i := 1 to length(w2) do
if w2[i] in m then Exclude(m, w2[i]);
Writeln('Гласные, присутствующие в первом слове и отсутствующие во втором:');
foreach c in m do Write(c, ' ');
Writeln
end.
Тестовое решение:
Введите первое "слово"
Дай, Джим, на счастье лапу мне!
Введите второе "слово"
Сергей Есенин
Гласные, присутствующие в первом слове и отсутствующие во втором:
а у