Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.03.2012, 12:42
Профессор
Отправить личное сообщение для alexan0308 Посмотреть профиль Найти все сообщения от alexan0308
 
Регистрация: 11.04.2011
Сообщений: 207

Помогите создать цикл перебора
Помогите с алгоритмом перебора... Дано s клеточек, m подряд слева закрашены, n подряд справа закрашены, не соприкасаются. Нужно перебрать все возможные варианты.

Вот иллюстрация m=3 n=4 s=10... первый набор всегда должен лежать левее второго.
1110111100
1110011110
1110001111
0111011110
0111001111
0011101111

или более наглядно
***-****--
***--****-
***---****
-***-****-
-***--****
--***-****

В перспективе надо для любого числа наборов клеток... Хотя бы для двух сделать ))
Ответить с цитированием
  #2 (permalink)  
Старый 18.03.2012, 18:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

alexan0308,
Вариант)))
<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>

<body>
<script type="text/javascript">
var m=3, n=4, s=10;
k = s-(m+n);
for (var arr = [0, 0, 0]; k;) {
    for (var i = k; 0 < i;) arr[2] = --i, arr[1] = k - i, document.write(Array(arr[0] + 1).join("-") + Array(m + 1).join("*") + Array(arr[1] + 1).join("-") + Array(n + 1).join("*") + Array(arr[2] + 1).join("-") + "<br />");
    k--;
    arr[0]++
};
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 18.03.2012, 19:14
Профессор
Отправить личное сообщение для alexan0308 Посмотреть профиль Найти все сообщения от alexan0308
 
Регистрация: 11.04.2011
Сообщений: 207

Впечатляюще... правда, не очень понятно... Может пояснишь?
Так то я решил проблему но твое решение интереснее. Я сделал так
for (i1=0; i1<N-p-q+1; i1++) 
	  {
	    for (i2=i1+p+1; i2<N-q+1; i2++) 	    
 		{
		    for (k=0; k<N; k++) {variant[k]=0;}
			for (k=i1; k<i1+p; k++) {variant[k]=1;}
			for (k=i2; k<i2+q; k++) {variant[k]=1;}
                      // что то делаю с выборкой
                       }
               }

тут p,q,N вместо p, q, s.
Можешь очистить алгоритм от вывода, оставить только массив variant?

Последний раз редактировалось alexan0308, 18.03.2012 в 19:17.
Ответить с цитированием
  #4 (permalink)  
Старый 18.03.2012, 19:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

alexan0308,
Длина разделителей равна остатку от общей длины за минусом двух длин занятых участков, стоять эти разделители могут только в трёх местах, осталось распределить))) в распределении есть закономерность согласно этой закономерности и составлен скрипт.
например при к = 4 последний разделитель равен 3,2,1,0 - 2,1,0 - 1,0 - 0 у других разделителей своя закономерность.
Ответить с цитированием
  #5 (permalink)  
Старый 18.03.2012, 20:25
Профессор
Отправить личное сообщение для alexan0308 Посмотреть профиль Найти все сообщения от alexan0308
 
Регистрация: 11.04.2011
Сообщений: 207

понятно... ладно уж я простыми циклами обойдусь =)
Ответить с цитированием
  #6 (permalink)  
Старый 18.03.2012, 22:28
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

S=10;
M=3;
N=4;
var out = [], i = 1, k, l, j, res;
for ( ; i <= S - M - N; i++ ) {
	k = 0;
	l = (S - M - N) - i;
	for ( ; l > -1; l--, k++ ) {
		res = [];
		for ( j = k; j--; ) res.push('-');
		for ( j = M; j--; ) res.push('*');
		for ( j = i; j--; ) res.push('-')
		for ( j = N; j--; ) res.push('*');
		for ( j = l; j--; ) res.push('-')
		out.push( res.join('') );
	}
}
alert( out.join("\n") )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать javascript для ВКонтакте roxana_babay Оффтопик 2 19.01.2011 06:43
Помогите создать тройное select меню JuriySOFT Элементы интерфейса 12 14.06.2010 14:33
Помогите создать скрипт замены картинок при наведении курсора. SantaS Я не знаю javascript 3 05.06.2009 12:59
Пожалуйста, помогите создать Web-страницу, содержащую заданную форму Mikhail Работа 1 14.05.2009 00:41
Пожалуйста, помогите создать Web-страницу, содержащую заданную форму Mikhail Элементы интерфейса 2 13.05.2009 22:57