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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на рекурсию., Надо составить таблицу где будут все цифры в диапазоне от 1 до N и где
DarkWishmaster
сообщение 6.02.2011 22:33
Сообщение #1


Бывалый
***

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

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


Привет.
Вообщем дано число N. Надо выяснить если возможно поставить все числа в диапазоне от 1 lдо N в массив из L линий так что-бы сума чисел из каждой линии будет одинаковой. (место той или иной цифры в массиве не важно, главное что бы не повторялись)
Например N:=8 , L=4
1 8 9 (для этого примера у меня всё работает, и для всех где N=2*L;
2 7 9 Я как понимаю что тут надо Бэктрэкинг использовать или другую рекурсию, но как это сделать
3 6 9 я не знаю.
4 5 9 {в первых колонках цифры, в третий сума}

for i:=1 to N do                                                              
S:=S+i;
if S mod L<>0 then Q:=false {тут выяснем суму которую надо посчитать,
else Q:=true; например если если N=8 то сума будет 9}
S:=S div L;
if Q=True then begin
for i:=1 to L do begin
k:=0; Sa:=0; M:=N+1-i;
while Sa<>S do begin
Sa:=Sa+M; {а тут бред... числа всё равно повторяются}
inc(k);
if Sa>S then begin Sa:=Sa-M; dec(m); dec(k)
end else begin a[i,k]:=M; dec(m); end;
h:=k;
end;
end;
end;
for i:=1 to L do begin
a[i,k+1]:=S;
for j:=1 to k+1 do begin
write(a[i,j],' '); end;


Сообщение отредактировано: DarkWishmaster - 7.02.2011 12:43
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
TarasBer
сообщение 7.02.2011 10:31
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


Ты вывел все цифры числа 12345678.
А по условию надо вывести все цифры числа 8 (то есть одну-единственную цифру).
Что на самом деле написано в условии?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 7.02.2011 12:41
Сообщение #3


Бывалый
***

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

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


Цитата(TarasBer @ 7.02.2011 11:31) *

Ты вывел все цифры числа 12345678.
А по условию надо вывести все цифры числа 8 (то есть одну-единственную цифру).
Что на самом деле написано в условии?


Ну так так и надо, вывести все числа в диапазоне от 1 до N в L линий так что-бы сума в каждой линии было одинаковой;
Например N=64
L:=8
1 4 6 3..... сума
2 32 13 ..... сума
и так 8 линий, но чтобы числа не повторялись в масиве.
Что написано в условии точно написать не могу, так как оно было на другом языке.
Всё, исправил первый пост, я там неправильно написал, извините.

Сообщение отредактировано: DarkWishmaster - 7.02.2011 12:43
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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