//самое короткое слово #include < iostream> #include < cstdlib> #include < cstring> using namespace std; int main(int argc, char** argv) { int i=0,j=0,l=0; char st[200]; char ch=' '; cout< < " string: "; gets(st); cout< < endl; string mins; int mn,bgmn,emn,tek; mn=strlen(st); bgmn=0; while (true) { while ((st[j]! =ch) and (j< strlen( j++; tek=j-l; for (int i=l; i< j; i++) { if (tek< mn) { mn=tek; bgmn=l; emn=j-1; } } if (j==strlen(st)) break; j++; l=j; }//запись строки for (int i=bgmn; i< =emn; i++) mins=mins+st[i]; cout< < "short word: "< < mins< < endl< < endl; system("pause"); return(0); }
ilukianienko458
10.08.2021
Использован алгоритм 115б "генератор перестановок", опубликованный в книге м.и.агеев, в.п.алик, ю.и.марков. библиотека алгоритмов 101б - 150б. москва, "советское радио", 1978 и переведенный на паскаль с языка алгол-60. const n=7; var p,d: array[2..n] of integer; a: array[1..n] of string: =('426','62','84','4','2','8','24'); prim115: boolean; procedure perm(n: integer); var t: string; k,q: integer; label index,iter,trans; begin if prim115 then begin prim115: =false; for k: =2 to n do begin p[k]: =0; d[k]: =1 end end; k: =0; index: q: =p[n]+d[n]; p[n]: =q; if q=n then begin d[n]: =-1; goto iter end; if q< > 0 then goto trans; d[n]: =1; k: =k+1; iter: if n> 2 then begin n: =n-1; goto index end; q: =1; prim115: =true; trans: q: =q+k; t: =a[q]; a[q]: =a[q+1]; a[q+1]: =t end; var s,maxs: string; i,m: integer; pal: boolean; begin prim115: =true; maxs: =''; repeat s: =''; for i: =1 to n do s: =s+a[i]; m: =length(s); pal: =true; for i: =1 to m div 2 do if s[i]< > s[m-i+1] then begin pal: =false; break end; if pal then if maxs< s then maxs: =s; perm(n); until prim115; writeln(maxs) end. результат выполнения программы: 842624426248
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Упорядочить следующие числа по возрастанию: 1) 15616 2) 1100110112 3) 6758 4) 30010в ответе запишите только номера чисел. например: 2134