IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Пирамида, С++
first_day
сообщение 19.12.2007 14:23
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской
Реальное имя: Илья

Репутация: -  1  +


Задача: необходимо найти кол-во возможных вариантов постройки пирамиды, если основание n кубиков, а высота k кубиков. Каждый следующий ряд можно уложить только так, чтобы слеа и справа был хотя бы 1 свободный кубик.

Идея у меня такая: поднимаясь на следующую ступеньку, ставим n-2 кубиков (это становится новое основание), дальше пытаемся сдвинуть эту группу кубиков вправо, попутно проверяя возможность подняться наверх. Уменьшаем эту группу на 1, повторяем. Если какой-то из функций достигается нужный уровень, т.е. k, то кол-во вариантов увеличиваем.
Рекурсию никогда раньше не использовал, попробова, вот, что получилось:

#include <iostream>
using namespace std;
int step(int, int, int);
int main ()
{
	int n,k,otv=0;
	cin>>n>>k;
	otv+=step(n,k,1);
	cout<<otv;
	return 0;
}

int step(int x, int y, int z)
{
	int l,r,size,st,l2,r2,sum=0;
	st=z;
	size=x;
	if (size-2>=1) //возможна ли следующая ступенька
	{	
		r=size-1;
		l=size-r;
		size=size-2;
		st++;
		while (l!=r) //уменьшение кубиков на ступеньке
		{
			l2=l;
			r2=r;
			while (r2<size) //сдвиг кубиков на ступеньке
			{
				if ((r-l>2) && (st<=y)) step(size,y,st); //подъем наверх
				l2++;
				r2++;
			}
			r--;
		}
		if (st==y) sum++;	
	}
	return sum;
}


Выдает либо 0, либо 1...

Сообщение отредактировано: first_day - 19.12.2007 14:27


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Я бы изменил мир, да Бог не дает исходников.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 26.07.2025 15:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"