Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 4

Вычислить все сочетания из N элементов по M (натуральные числа)

29.05.2010, 23:01. Показов 6223. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Перед мной стоит задача вычислить все сочетания из N элементов по M, чтобы потом полученные результаты использовать в основной программе как коэффициенты полинома. Нужны все сочетания, и с повторением также. К сожалению мои знания языков программирования ограничиваются Паскалем и Рубы, поэтому все алгоритмы которые нашел на других языках программирования, просто не понимаю.
Буду благодарен за любую помощь, советы, идеи!

Добавлено через 13 минут
Программа, генерирующая сочетания с повторениями

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const
  alphabet : string[26] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var
  b : array [1..100] of byte;
  N,i,j,k,M,N1 : byte;
  Procedure SwapB(i,k:byte);
    var x : byte;
    begin
      x:=B[i]; B[i]:=B[k]; B[k]:=x;
    end;
Procedure WriteB;
    var i,j : byte;
    begin
      j:=1;
      for i:=1 to N do
        if b[i]=0
          then Inc(j)
          else write(alphabet[j]);
      writeln;
    end;
begin
  readln(N1,M); N:=N1-1+M;
  for i:=1 to n1-1 do b[i]:=0;
  for i:=n1 to n1+m-1 do b[i]:=1;
  WriteB;
  while (true) do
    begin
      i:=N;
      while (i>0) and (B[i]>=B[i+1]) do i:=i-1;
      if i=0 then exit;
      for j:=i+1 to N do
        if (B[j]>B[i]) then K:=j;
      SwapB(i,k);
      for j:=i+1 to (i+ ((N+1-i) div 2)) do
        SwapB(j,N+i+1-j);
      WriteB;
    end;
end.
Нашел вот такую программу, только наверняка нужно изменить массив "A-..- Z" на "0 ... 9"
Посмотрите пожалуйста, программа подойдет для моего случая?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2010, 23:01
Ответы с готовыми решениями:

даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен m
даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен m,.

Определить все натуральные числа m, не превосходящие числа N. Сумма всех цифр числа m-простое число.
Уславие Определить все натуральные числа m, не превосходящие числа N. Сумма всех цифр числа m-простое число.

Даны натуральные числа n, m. Найти все натуральные числа меньшие n, квадрат суммы цифр которых равен m
Даны натуральные числа n, m. Найти все натуральные числа меньшие n, квадрат суммы цифр которых равен m

6
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
29.05.2010, 23:03
Если просто вычислить число сочетаний, то здесь.
Биноминальный коэффициент

Добавлено через 1 минуту
JohnGreed, Тебе для чего генерация сочетаний? Тебе вроде биноминальые коэффициенты нужны?
0
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 4
29.05.2010, 23:28  [ТС]
У меня есть полином, в который подставляя различные коэффициенты, получаешь разные функции,.
Нужно перебрать все возможные варианты коэффициентов, чтобы получить все функции которые им задаются.
Это задача над квазиполямы k-го порядка, и различными степенями полинома от 3 до .. пока не зависнет комп.

Добавлено через 5 минут
Ну например:
Над квазиполем 8-го порядка, в полиномом 8-й СТЕПЕНИ нужно подставить кофициенты начиная с ...
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 3
0 0 0 0 0 0 0 4
....
0 0 0 0 0 0 0 7
0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 2
.....
.....
7 6 5 4 3 2 1 0

Добавлено через 6 минут
Данная задача является только маленькой частью основной, программы над которой сижу уже 3 месяца, а когда дойшов к этой части, которую всегда считал простой, оказалось что я не знаю как это сделать
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.05.2010, 07:21
Цитата Сообщение от JohnGreed Посмотреть сообщение
Нужно перебрать все возможные варианты коэффициентов,
А они могут повторяться, или обязательно все разные?

Добавлено через 18 минут
Вот еще мысля, если нет желания заморачиваться с генерацией этих множеств, то можно попробовать так.
Судя по приведенным данным имеем восьмеричное представление десятеричных чисел
от 0 до 16 434 824.
Можно все эти числа перевести из СС 10 в 8, разбить на цифры и записать в массив a:array[1..8] of byte.
На первый взгляд по затратам не должно сильно различаться, при генерации все равно эти
16 434 824 массивов создавать нужно.
0
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 4
30.05.2010, 15:43  [ТС]
Ну пока сделаю так, чтобы проверить в целом работу программы в случае с 8-м порядком. Но в идеале, программа должна перебирать самые разные варианты, в том числе и C (8,4), C (8,6), C (9,7 ).... C (20,8) ... C ( 20,20)
Мы должны задавать N, M..
И проблема в том что мне попадались алгоритмы решения подобных задач только для отдельных случаев, а нужно общий.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.05.2010, 15:59
Такое ощущение, что Вы точно не знаете что Вам нужно. Например вот вариант создания матрицы биноминальных коэффициентов, из нее по запросу N,M программа выдает коэффициент.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uses crt;
function C(n,k: integer): longint;
begin
if (k=0) or (k=n) then C:=1
else  C:=C(n-1,k) + C(n-1,k-1);  {где 0 < K < N}
end;
var  a:array [1..20,1..20] of longint;
     n,k,i,j: byte;
begin
clrscr;
for i:=1 to 20 do
for j:=1 to 20 do
if j<=i then a[i,j]:=C(i,j)
else a[i,j]:=C(j,i);
write('Введите число 0<N<21; N=');
readln(N);
for i:=1 to 5 do
 begin
  write('Введите K=');
  readln(K);
  writeln('C(',N,',',K,')=',a[n,k]);
end;
readln
end.
0
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 4
30.05.2010, 16:19  [ТС]
Приношу свои извинения. Постараюсь точные сформулировать задачу:
Имеем входные данные: n, m
в результате нужно получить массив всех сочетаний C (n, m)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2010, 16:19
Помогаю со студенческими работами здесь

вычислить все сочетания из N элементов по M
на С нужно реализовать алгоритм вычисления всех возможных сочетаний из N элементов по M. подскажите пожалуста, как это сделать

Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m
namespace ConsoleApplication1 { class Program { static void Main(string args) { ...

Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых , равен m
Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых , равен m Решите на С++.Буду благодарна!

Даны натуральные числа N, M. найти все натуральные числа, меньше N, квадрат суммы цифр которых равен M
Помогите, пожалуйста, с задачей на C#: Даны натуральные числа N, M. найти все натуральные числа, меньше N, квадрат суммы цифр которых равен...

Даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен m
помогите плиз Даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен m


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru