uses crt;
{разделители слов, можно еще добавить}
const zn=[' ',':',',','!','?','-',';',')'];
var s,s1,s2:string;
i,k:byte;
begin
clrscr;
writeln('Введите строку, содержащую 2 одинаковых слова:');
readln(s);
s:=s+' ';{добавим в конец пробел}
for i:=1 to length(s) do
if s[i] in zn then s[i]:=' ';{все разделители заменим на пробелы}
while pos(' ',s)>0 do{пока есть 2 пробела рядом(в апострофах 2 пробела)}
delete(s,pos(' ',s),1);{1 пробел удаляем}
if s[1]=' ' then delete(s,1,1);{если первый символ пробел, тоже удаляем}
k:=0;
while pos(' ',s)>0 do{пока есть пробел}
begin
s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово до пробела}
for i:=pos(' ',s)+1 to length(s) do{смотрим строку дальше}
if (copy(s,i,length(s1))=s1){если набор символов совпадает с этим словом}
and(s[i-1]=' '){и перед ним пробел}
and((s[i+length(s1)]=' '){и за ним пробел}
or(i+length(s1)-1=length(s))) then{или это последнее слово}
begin
k:=1;{фиксируем совпадение}
s2:=s1;{запоминаем слово}
write('Одинаковые слова ',s2);{выводим на экран}
readln;
exit;{выходим из программы, нужно только 1 пару}
end;
delete(s,1,pos(' ',s));{удаляем первое слово, следующее первое}
end;
if k=0 then write('Нет двух одинаковых слов');
readln
end.
https://pastebin.com/iBg0qVwg Залил тебе на пастибин, что-бы тебе удобней было.
Тогда в бак 2 надо сложить стекло или жесть.
1) а) Допустим, мы в бак 2 сложили стекло. Это будет 52 + 85 = 137.
Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170.
Всего 141 + 137 + 170 = 448 перемещений.
1) б) Допустим, мы в бак 2 сложили жесть. Это будет 64 + 75 = 139.
Тогда в бак 1 кладем стекло. Это будет 98 + 85 = 183.
Всего 141 + 139 + 183 = 463 > 448.
2) Допустим, бумагу мы сложили в бак 2. Это опять 83 + 58 = 141.
2) а) Кладем в бак 3 стекло. Это будет 98 + 52 = 150.
Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170.
Всего 141 + 150 + 170 = 461 > 448.
2) б) Кладем стекло в бак 1. Это будет 98 + 85 = 183.
Тогда в бак 3 кладем жесть. 64 + 95 = 159
Всего 141 + 183 + 159 = 483 > 448.
3) Положим бумагу в бак 1. Это будет 83 + 83 = 166.
3) а) Положим стекло в бак 2. Это будет 52 + 85 = 137.
Тогда жесть пойдет в бак 3. 64 + 95 = 159.
Всего 166 + 137 + 159 = 465 > 448.
3) б) Положим стекло в бак 3. Это будет 52 + 98 = 150.
Тогда жесть пойдет в бак 2. Это будет 64 + 75 = 139.
Всего 166 + 150 + 139 = 455 > 448.
Я рассмотрел все 6 вариантов разложить 3 мусора по 3 бакам.
ответ: минимальное количество перемещений равно 448.