Показать сообщение отдельно

  #589  
Старый 05.06.2008, 00:55
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

2 plat

1000*s+100*e+10*n+d+1000*m+100*o+10*r+e=10000*m+10 00*o+100*n+10*e+y
индексируем переменные
s-> a[0]
e-> a[1]
n-> a[2]
d-> a[3]
m-> a[4]
o-> a[5]
r-> a[6]
y-> a[7]

далее простая рекурсия с глубиной 8 шагов
Код:
int a[8];
void step(int cur)
{
   int i,j,fl;
  if(cur<8)
  {
   for(i=0;i<10;i++)
   {
      for(j=0,fl=0;j<cur && fl==0;j++)
       if(a[j]==i)
         fl=1;
       if(fl==0)
       {
          a[cur]=i;
          step(cur+1);
       }
   }
  }
  else
  {
    if(1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1]==10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7])
    {
       // тут вываливай результат ... он в массиве
    }
  }
}

Последний раз редактировалось Delimiter; 05.06.2008 в 01:01..
 
Ответить с цитированием