Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с двумерным массивом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Jane
Дана такая задачка:
"Напечатайте двумерный массив r (размерность задается), где r(n,k) - количество представлений числа n в виде суммы k слагаемых (перестановки слагаемых новым представлением не считаем). Например, 7=5+1+1=4+2+1=3+3+1=3+2+2 и больше вариантов представления числа 7 тремя слагаемыми нет, поэтому r(7,3)=4.
В процессе вычисления используйте уже посчитанные значения."
Помогите,пожалуйста разобраться с сутью задания...
Я подставила несколько чисел-получилось,что если из n вычитать k, как раз и получается искомое кол-во представлений,т.е r(7,3)=4, r(5,3)=2,r(10,4)=6,возможно ли такое вообще?
И ещё:какой тогда должен в результате получаться двумерный массив,если дано всего одно число n?Вот в примере:r(7,3)=4,т.е число строк в матрице-7,столбцов-3,элемент с индексом (7,3)=4,а все остальные элементы-нулевые???
blink.gif
volvo
Jane
Смотри, что надо сделать... Вот пример матрицы R размером 4х4:
Цитата
  r(1, 1)  r(1, 2)  r(1, 3)  r(1, 4)
  r(2, 1)  r(2, 2)  r(2, 3)  r(2, 4)
  r(3, 1)  r(3, 2)  r(3, 3)  r(3, 4)
  r(4, 1)  r(4, 2)  r(4, 3)  r(4, 4)

То есть у тебя уже получается двумерная матрица... Осталось только посчитать значения r(i, j) и напечатать их...
mithquessir
Jane
А например, r(3,1)?
Ведь будет всего одно преставление: 3=3?
А n-k = 2.
Jane
mithquessir
тогда получается,что все элементы первого столбца и гланой диагонали будут равны 1...Для остальных-то(тех,что снизу главной диагонали) вроде бы n-k всё-таки подходит?...
volvo
Jane
А что делать с r(1, 4) например? То есть с теми r(n, k) где n < k? То есть все, что выше главной диагонали? Присвоить нулю?
Jane
volvo
Да,как-то странно получается...Но если не присваивать 0,что же с ними ещё делать?
-Jane-
Добавлено из темы "Помогите с двумерным массивом"

Здраствуйте! Помогите,пожалуйста с задачей:
Напечатайте двумерный массив r (размерность задается), где r(n,k) - количество представлений числа n в виде суммы k слагаемых (перестановки слагаемых новым представлением не считаем). Например, 7=5+1+1=4+2+1=3+3+1=3+2+2 и больше вариантов представления числа 7 тремя слагаемыми нет, поэтому r(7,3)=4.(В процессе вычисления используйте уже посчитанные значения.)

Я решила её так:
Код
Program Lab3;
 var A:array[1..100,1..100] of integer;   {opisanie dvumernogo massiva A}
     i,                                                   {tekuschii nomer stroki}
     j,                                                   {tekuschii nomer stolbca}
     n,                                                   {kol-vo strok}
     k:integer;                                       {kol-vo stolbcov}
begin
  writeln('Vvedite razmer massiva:');    
  write('Vvedite kol-vo strok n=');
  readln(n);                                    
  write('Vvedite kol-vo stolbcov k=');
  readln(k);                            
  for i:=1 to n do                      
  for j:=1 to k do                      
  if (j=1) or (i=j) then A[i,j]:=1        
  else if i<j then A[i,j]:=0
  else A[i,j]:=i-j;
  writeln('dvumernii massiv,gde r(n,k)-kol-vo predstavlenii n v vide summi k slagaemih');
  for i:=1 to n do begin
      for j:=1 to k do
      write(A[i,j],' ');              
      writeln;
      end;
  readln;
end.


Преподаватель сказал,что формула A[i,j]:=i-j - слишком простая для этой задачи,и верна не для всех случаев,поэтому здесь нужно что-то другое писать,только вот не знаю что...Помогите мне пожалуйста...blink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.