Помогите решить задачу
я никак не могу сообразить как решить задачу.надо написать слово и добавить к нему минимальное кол-во букв чтобы получился палиндром(слово,которое читается и справа налево и слева направо одинаково). я тут немного набросал:
procedure TForm1.Button1Click(Sender: TObject); var s:string; i,b,k,n:integer; a:array[1..100] of char; buf:array[1..100] of char; begin k:=0; s:=edit1.Text; n:=length(s); if n>3 then begin for i:=1 to n do a[i]:=s[i]; for i:=1 to (n div 2) do begin if a[i]<>a[n-k] then begin for b:=1 to n do buf[b]:=a[b+i-1]; a[i]:=a[n-k]; for b:=1 to n do a[b+i]:=buf[b]; k:=k+1; n:=n+1 end else k:=k+1; end; end; edit1.Text:=''; for i:=0 to n*2 do edit1.Text:=edit1.Text+a[i]; end; посмотрите и хотя бы скажите правильно я начал и если нет скажите хоть способ решения:) |
Вы сначала должны убедиться, не является ли введенное слово палиндромом, а уж потом начинать дописывать буквы.
И еще, почему вы исключаете слова из 3-х букв, они же тоже могут быть палиндромами, к примеру, слово "кок". |
ну...слово должно быть больше 3-х символов по условию задачи(задача с олимпиады) и слово проверить легко палиндром это или нет.Меня интересует именно способ образования палиндрома из обычного слова:)
|
Цитата:
|
всмысле осмысленность,если слово существующее,то нет,осмысленность здесь значения не играет,просто надо из строки символов сделать палиндром,строку символов,которая ситается и справа налево и слева направо одинакого:)
|
Часовой пояс GMT +4, время: 23:15. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.