Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Boris Sivko                          2:452/26.14    11 Mar 2003  00:57:40
 To : Andrew Starsh
 Subject : Ладно.
 -------------------------------------------------------------------------------- 
 
 
     Отвечать на письмо на тему "Re: Ладно." очень просто. Это уже сделал Andrew 
 Starsh. о вот когда часы пробили ровно 06:54, а календарь показывал Воскресенье 
 Март 09 2003, настала моя очередь:
 
  AS>     Так и видятся два цикла, котоpыми я выкpутился. :-)
 
   Ты не выкрутился, а решил совершенно другую задачу.
   Твой код:
 
 ДДД Цитирую golded.pas ДДД
 VAR
    m: array[1..256] of byte;
    n,Count,count2: BYTE;
    s,s1: string;
    F: text;
 
 BEGIN
  for n:=1 to 4 do m[n]:=n;
 
  Assign(F, 'com.txt');
  Rewrite(F);
 
  (*Сначала опpеделяем pазмеp массива*)
  n:=0;
  while m[n+1]>0 do n:=n+1;
  (*Потом внешний цикл, ведущий по пpойденной части массивa*)
  s:='';
  count:=0;
  while count<n do
  begin
  (*Внутpенний цикл с добавкой числа к пpойденной части*)
  for count2:=count+1 to n do
  begin
   str(m[count2],s1);
   if s='' then writeln(F,s1) else Writeln(F,s+', '+s1);
  end;
  count:=count+1;
  str(m[count],s1);
  if s='' then s:=s1 else s:=s+', '+s1;
  end;
  close(f);
 END. ДДД Конец цитаты ДДД
 
 Для 4-х твой результат:
 
 ДДД Цитирую com.txt ДДД
 1
 2
 3
 4
 1, 2
 1, 3
 1, 4
 1, 2, 3
 1, 2, 4
 1, 2, 3, 4
 ДДД Конец цитаты ДДД
 
 Тебе не кажется, что тут сочетаний не хватает? 7 штук если быть точным.
 
 Решение с помощью рекурсии:
 
 ДДД Цитирую golded2.pas ДДД
 Var   s:string;
       a:array[1..100] of byte;
 i,count:longint;
       t:text;
 
 Const n_elem=4;
 
 Procedure output(s:string);
 Var i,p:longint;
 Begin
   inc(count);
   write(t,'a[',count,']=(');
   p:=length(s);
   while (s[p]='0')and(p>0) do dec(p);
 
   if p>0 then
 
   begin
     for i:=1 to p-1 do if s[i]='1' then write(t,a[i],',');
     write(t,a[p]);
   end;
   writeln(t,')');
 End;
 
 Procedure rec(s:string);
 Begin
   if length(s)+1=n_elem then
   begin
     output(s+'0');
     output(s+'1');
   end else
   begin
     rec(s+'1');
     rec(s+'0');
   end;
 End;
 
 BEGIN
   assign(t,'output.txt');
   rewrite(t);
   for i:=1 to n_elem do a[i]:=i;
   count:=0;
   rec('');
   close(t);
 END.
 
 ДДД Конец цитаты ДДД
 
 Её результат:
 
 ДДД Цитирую output.txt ДДД
 a[1]=(1,2,3)
 a[2]=(1,2,3,4)
 a[3]=(1,2)
 a[4]=(1,2,4)
 a[5]=(1,3)
 a[6]=(1,3,4)
 a[7]=(1)
 a[8]=(1,4)
 a[9]=(2,3)
 a[10]=(2,3,4)
 a[11]=(2)
 a[12]=(2,4)
 a[13]=(3)
 a[14]=(3,4)
 a[15]=()
 a[16]=(4)
 ДДД Конец цитаты ДДД
 
 Рекурсивный порядок вполне очевиден.
 Тебе нужен другой?
 Более простой алг с классическим двоичным порядком:
 
 ДДД Цитирую gold3.pas ДДД
 var a:array[1..100] of byte;
 i,j,x:longint;
 const n=4;
 begin
   for i:=1 to 4 do a[i]:=i;
   for i:=0 to round(exp(2*ln(n)))-1 do
   begin
     x:=i;
     write('a[',i,']=(');
     j:=1;
     while x<>0 do
     begin
       if x mod 2 = 1 then write(a[j],' ');
       inc(j);
       x:=x div 2;
     end;
     writeln(')');
   end;
 end. ДДД Конец цитаты ДДД
 
      Счастливо, Andrew. Вспоминай обо мне...
 ... I'll be back...
  * Origin: Я такой же осёл, как и Вы, сэр! (2:452/26.14)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Ладно.   Aleksey Zelenin   04 Mar 2003 03:30:29 
 Re: Ладно.   Andrew Ezhguroff   05 Mar 2003 04:57:48 
 Re: Ладно.   Mike Girkin   05 Mar 2003 09:20:58 
 Re: Ладно.   Aleksey Zelenin   05 Mar 2003 11:27:45 
 Re^2: Ладно.   Soldatenkov Mitea   06 Mar 2003 01:13:36 
 Re^2: Ладно.   Mike Girkin   06 Mar 2003 20:45:07 
 Re[2]: Ладно.   Aleksey Zelenin   07 Mar 2003 01:47:33 
 Ладно.   Boris Sivko   05 Mar 2003 06:08:38 
 Ладно.   Aleksey Zelenin   06 Mar 2003 02:11:48 
 Re: Ладно.   Andrew Starsh   09 Mar 2003 07:54:16 
 Ладно.   Boris Sivko   11 Mar 2003 00:57:40 
 Re: Ладно.   Andrew Starsh   13 Mar 2003 23:36:55 
 Re: Ладно.   Michael Semikov   05 Mar 2003 19:59:19 
 Re: Ладно.   Sergey Andrianov   05 Mar 2003 10:22:18 
 Re^2: Ладно.   Andrew Starsh   09 Mar 2003 06:38:52 
 Re^3: Ладно.   Andrew Starsh   10 Mar 2003 08:03:48 
Архивное /ru.algorithms/207123e6d271b.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional