Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 4

В заданном диапазоне чисел найти все сочетания цифр без повторений

14.03.2016, 19:12. Показов 2591. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите исправить код программы.Вот задание: Для заданных m и n найти все сочетания по m из чисел 1,2,...,n, без повторений.К примеру вводим n=4,m=2, на выходе должны получить 1 2, 1 3, 1 4, 2 3, 2 4, 3 4.В моей программе выводит только первую комбинацию и все.Заранее спасибо.
C++
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
#include <iostream>
 
using namespace std;
 
int main(){
    
    int n,m,i,j;
    cin >> n >> m;
    
    int a[n];
    
    for(i = 0; i < n; ++i){
        a[i] = i+1;
    }
    
    do{
        for(i = 0; i < n; ++i){
            cout << a[i];
    }
    i = n;
        while(a[i] == m-n+1){
            i=i+1;
        }
    
            if(i > 0){
                a[i]=a[i]+1;
            for(j = i+1; j <= n; ++j){
                a[j] = a[j-1] + 1;  
        }
     }
    } while(i == 0);
    
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2016, 19:12
Ответы с готовыми решениями:

Функция, заполняющая массив псевдослучайными числами в заданном пользователем диапазоне без повторений
Тема: Функции2. 4. Реализовать функцию RandWithoutRepetition, с помощью которой можно было бы заполнить массив псевдослучайными числами в...

Найти все числа в заданном диапазоне, которые делятся на любую из своих цифр
Без понятий как сделать обясните плиз

Найти все числа в заданном диапазоне, которые делятся на сумму своих цифр.
Написать программу, содержащую не менее двух функций в разных файлах .c (.cpp), и три варианта определения функций: - нерекурсивная; ...

11
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
15.03.2016, 12:19
Balans, Что-то очень много кода... Можно гораздо аккуратнее сделать... Если правильно понял задание, то вот так можно сделать...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main(){
    int n,m,cnt=1;
    std :: cin>>n>>m;
 
    for (int i=0;i<=m;i++){
    for (int i=cnt+1;i<=n;i++){
    std :: cout<<cnt<<" "<<i<<","<<" ";}
    cnt++;}
 
    std :: cout<<std :: endl;
    system("pause");
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.03.2016, 14:17
Cadr, Вы уверены?

Добавлено через 2 минуты
Вот, поискал по сусекам. Кажется, должна работать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
S(int n, int k)
{ int *A, i, p;
 A = (int *)malloc(k*sizeof(int));
 for(i=0; i<k; i++) A[i] = i;
 while(1) {
    for(i=0; i<k; i++) printf("%d ", A[i]+1);
    printf("\n");
    if (A[k-1] < n-1) A[k-1]++;
    else {
      for(p=k-1; p>0; p--)
        if (A[p] - A[p-1] > 1) break;
      printf("p=%d\n", p);
      if (p==0) break;
      A[p-1] ++;
      for(i=p; i<k; i++) A[i] = A[i-1] + 1;
    }
 }
}
main()
{
  S(6, 4);
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
16.03.2016, 15:54
-ДоМоВоЙ-, Смысл вашего кода мне постигнуть не удалось...
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
16.03.2016, 18:08
Байт, Это,это печально
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
16.03.2016, 22:47
Цитата Сообщение от -ДоМоВоЙ- Посмотреть сообщение
это печально
Это действительно печально. Поскольку код ваш - полная чушь. А форум-то - "для начинающих". И начинающие случайно могут подумать, что в вашем коде есть какой-то смысл.
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
16.03.2016, 23:17
Байт, я думаю люди прочитают до конца тему, и поймут, что я ошибся... Я писал выше с ответом, "если я правильно понял задание"...
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
16.03.2016, 23:32
Цитата Сообщение от -ДоМоВоЙ- Посмотреть сообщение
"если я правильно понял задание"
Скромность украшает. Но дело в том. Тут - дети. Они вам верят, как и любому. Я просто вынужден сказать, что вы их обманываете. И взываю к вашей совести.
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
16.03.2016, 23:37
Байт, я вас услышал еще 3 сообщения назад... Вы от меня сейчас, что хотите? Ошибку я свою признал... Не будьте сами ребенком, не надо повторяться...
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.03.2016, 00:13
Цитата Сообщение от -ДоМоВоЙ- Посмотреть сообщение
Вы от меня сейчас, что хотите?
Всего лишь слов. "Я ошибся там-то и там-то, считайте мой пост номер такой-то за ерунду" Это бывает. Со всяким. И у меня было. Не раз. Но тут фишка в том, что нужно высоко поднять голову. "Да - я ошибся! Пусть меня простят те, кто не ошибается никогда".
Я не знаю, понятна ли вам идея "высоко поднятой головы"
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
17.03.2016, 00:20
Байт, я вам это написал уже 2 раза... Повторять больше не намерен. Дискуссия на данную тему, я надеюсь исчерпана.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
17.03.2016, 03:30
Задача возникала и обсуждалась уже несчетное количество раз.

Функция next_subset по ссылке занимается именно решением данной задачи. На изначально вход берет значение n и вектор из m элементов типа unsigned со значениями 0, 1, 2, ..., m-1 . Каждый вызов этой функции порождает новое сочетание, пока она не вернет false.

Если выдрать ее оттуда, то получим

C++
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
39
40
41
42
43
44
45
46
#include <cassert>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>
 
bool next_subset(std::vector<unsigned> &subset, unsigned n)
{
  unsigned overflow = n;
  auto it = subset.end();
 
  do
  {
    --it;
    if (++*it < overflow || it == subset.begin())
      break;
 
    --overflow;
  } while (true);
 
  assert(*it <= overflow);
  if (*it == overflow)
    return false;
 
  for (++it, ++overflow; it != subset.end(); ++it, ++overflow)
  {
    *it = *(it - 1) + 1;
    assert(*it < overflow);
  }
 
  return true;
} 
 
int main(int argc, char *argv[])
{
  const unsigned M = 2, N = 6;
 
  std::vector<unsigned> subset(M);
  std::generate(subset.begin(), subset.end(), [n=0]() mutable { return n++; });
 
  do
  {
    std::copy(subset.begin(), subset.end(), std::ostream_iterator<unsigned>(std::cout, " "));
    std::cout << std::endl;
  } while (next_subset(subset, N));
}
Та же тема на С: Вывести всевозможные комбинации из n-чисел размером k

Добавлено через 2 часа 43 минуты
Там же показано, что если величина n не превосходит количества битов в самом широком целочисленном типе, поддерживаемом данной реализацией, то есть остроумный "битовый" алгоритм генерации сочетаний.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2016, 03:30
Помогаю со студенческими работами здесь

Найти сумму чётных чисел в заданном диапазоне, у которых сумма цифр меньше 12
Напишите программу, которая запрашивает числа A и B (A&lt;B), и находит сумму только чётных двузначных чисел в диапазоне от A до B...

Функция: найти все числа в заданном диапазоне, которые делятся на любую из своих цифр
Найти все числа в заданном диапазоне, которые делятся на любую из своих цифр. нужно написать программу через функцию напишите кто может...

В заданном диапазоне найти все числа, которые делятся без остатка на a или на b
Добрый вечер!Помогите решить лабу по программированию 1.Даны два числа aи b. Найдите среди чисел от 1 до 1000 все числа, которые...

Найти все «пифагоровы тройки» в заданном диапазоне чисел
Необходимо найти все «пифагоровы тройки» в заданном диапазоне чисел — натуральные решения уравнения x2+y2=k2, где x, y и k лежат в...

В заданном диапазоне найти все пары натуральных дружественных чисел, удовлетворяющих условию
Два натуральных числа называются дружественными, если каждое из них равно сумме всех натуральных делителей другого (само число при этом не...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru