Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Задача "возможные решения"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
zsaz
Отправлено: 19 Мая, 2010 - 11:47:46
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Помогите плз решить задачу.
Есть три коробки, а в каждой лежит по 2 краски. Нужно из каждой коробки взять по 1 краске и узнать общее количество уникальных сочетаний. А теперь более наглядно:
коробка1: черная, белая
коробка2: красная, зеленая
коробка3: синяя, желтая

1 сочетание: черная, красная, синяя
2 сочетание: черная, красная, желтая
3 сочетание: черная, зеленая, синяя
4 сочетание: черная, зеленая, желтая
и т.д.
................................ .........................

Подскажите, как организовать такую задачку, чтобы составить все возможные комбинации???
 
 Top
valenok
Отправлено: 19 Мая, 2010 - 17:26:26
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




3 массива и 3 цикла вложенные друг в друга первое что приходит в голову.


-----
Truly yours, Sasha.
 
My status
 Top
Ch_chov
Отправлено: 19 Мая, 2010 - 18:20:06
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




 
 Top
Champion Супермодератор
Отправлено: 19 Мая, 2010 - 18:31:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




zsaz пишет:
составить все возможные комбинации
и
zsaz пишет:
узнать общее количество уникальных сочетаний
это разные вещи. Если второе не необходимо, то задача быстрее решается простыми формулами комбинаторики
 
 Top
Petro
Отправлено: 20 Мая, 2010 - 10:37:13
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




Если порядок коробок один и тот же, вот что получается:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $kor0 = Array('Черная','Красная');
  3. $kor1 = Array('Белая','Зеленая');
  4. $kor2 = Array('Синяя','Желтая');
  5.  
  6. for($i=0; isset($kor0[$i]); $i++)
  7. {
  8.    for($j=0; isset($kor1[$j]); $j++)
  9.    {
  10.  
  11.       for($k=0; isset($kor2[$k]); $k++)
  12.       {  
  13.          echo $kor0[$i] ;      
  14.          echo $kor1[$j];      
  15.          echo "$kor2[$k] <br>";      
  16.  
  17.       }  
  18.    }
  19.  
  20. }
  21. ?>

Выводит:
ЧернаяБелаяСиняя
ЧернаяБелаяЖелтая
ЧернаяЗеленаяСиняя
ЧернаяЗеленаяЖелтая
КраснаяБелаяСиняя
КраснаяБелаяЖелтая
КраснаяЗеленаяСиняя
КраснаяЗеленаяЖелтая

Но если представить что есть вероятнось выбора ведра, задача будет совсем другая, и вариантов будет больше.


-----
Нет ничего более постоянного, чем временное.
 
 Top
Petro
Отправлено: 20 Мая, 2010 - 14:32:20
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




я понимаю что если ведра тоже есть случайность, значит вариантов вытягивания краски увеличивается.
пример:
ЧернаяБелаяСиняя
ЧернаяБелаяЖелтая
ЧернаяЗеленаяСиняя
ЧернаяЗеленаяЖелтая
КраснаяБелаяСиняя
КраснаяБелаяЖелтая
КраснаяЗеленаяСиняя
КраснаяЗеленаяЖелтая

БелаяЧернаяСиняя
БелаяЧернаяЖелтая
ЗеленаяКраснаяЖелтая
....
и таких вариантов 48

(Добавление)
Вопрос такой, как вывести остальные варианты?


-----
Нет ничего более постоянного, чем временное.
 
 Top
Petro
Отправлено: 20 Мая, 2010 - 14:37:56
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




Перенесено из темы "Задача "возможные решения""
наверно начало будет таким
<?php
$ARRAY = Array
(
korobka0 = Array('Черная ','Белая'),
korobka1 = Array('красная ','Зеленая'),
korobka2 = Array('Синяя ','Желтая')
);
потом с помощью функции как то.
?>


-----
Нет ничего более постоянного, чем временное.
 
 Top
Petro
Отправлено: 21 Мая, 2010 - 14:42:35
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




к сожалению у меня не получается вывести для abc все уникальные результаты (я понимаю что результатов должно быть 3! = 6 вариантов), но у меня получается вот так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $ARRAY = Array('a', 'b', 'c');
  4. $dd=Array();
  5. $size = sizeof($ARRAY);
  6. $n=1;
  7. for($i=1; $i <= $size; $i++)
  8. {
  9.  $n*=$i;
  10. }
  11.  
  12. for($i=0; isset($ARRAY[$i]); $i++)
  13. {  
  14.   for($j=0; isset($ARRAY[$j]); $j++)
  15.   {  
  16.      for($v=0; isset($ARRAY[$v]); $v++)
  17.      {
  18.         echo $dd=$ARRAY[$i];
  19.         echo $dd=$ARRAY[$j];
  20.         echo $dd=$ARRAY[$v];
  21.         echo "<br>";
  22.      }
  23.   }
  24. }
  25. ?>
и выводит
aaa
aab
aac
aba
abb
abc
aca
acb
...
ccc


-----
Нет ничего более постоянного, чем временное.
 
 Top
Petro
Отправлено: 25 Мая, 2010 - 13:24:19
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




Я сделал то что хотел )))
выводит:
abc
acb
bac
bca
cab
cba

но теперь возник вопрос: Это можно как то по другому записать?
PHP:
скопировать код в буфер обмена
  1. $kor0 = Array('a','b','c');
  2.  
  3. for($i=0; isset($kor0[$i]); $i++)
  4.  {
  5.     for($j=0; isset($kor0[$j]); $j++)
  6.     {  
  7.         for($k=0; isset($kor0[$k]); $k++)
  8.        {  
  9.           if($i != $j){
  10.             if($i != $k){
  11.               if($j != $k){
  12.                  echo $kor0[$i];      
  13.                  echo $kor0[$j];      
  14.                  echo "$kor0[$k] <br>";
  15.               };
  16.             };
  17.           };      
  18.        }  
  19.     }
  20.  }

(Добавление)
Ура! Ура! Ура! Задача решена, ведра становятся в случайном порядке и краски беруться в случайном порядке (всего 48 вариантов вытягивания красок). Вот что получилось.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $kor0 = Array
  4. (
  5. Array('Черная ','Красная '),
  6. Array('Белая ','Зеленая '),
  7. Array('Синяя ','Желтая ')
  8. );
  9. $size = sizeof($kor0);
  10.  
  11. for($i=0; isset($kor0[$i]); $i++)
  12. {
  13.    for($j=0; isset($kor0[$j]); $j++)
  14.    {  
  15.       for($k=0; isset($kor0[$k]); $k++)
  16.       {  
  17.          if($i != $j){
  18.            if($i != $k){
  19.              if($j != $k){
  20.                $kor1 = $kor0[$i];
  21.                $kor2 = $kor0[$j];
  22.                $kor3 = $kor0[$k];
  23.                  for($n=0; isset($kor1[$n]); $n++)
  24.                  {
  25.                     for($m=0; isset($kor2[$m]); $m++)
  26.                     {
  27.                        for($v=0; isset($kor3[$v]); $v++)
  28.                        {  
  29.                           echo $kor1[$n];      
  30.                           echo $kor2[$m];      
  31.                           echo "$kor3[$v] <br>";      
  32.                        }  
  33.                     }
  34.                  } echo "<br>";
  35.               };
  36.            };
  37.          };      
  38.       }  
  39.    }
  40. }
  41. ?>

И опять вопрос ): этот код в php можно написать по другому (может быть как то легче или компактнее)? И еще вопрос. допутим у меня количество ведер и красок в ведрах будет каждый раз менятся, как тогда быть?


-----
Нет ничего более постоянного, чем временное.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB