Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/38: Рейтинг темы: голосов - 38, средняя оценка - 4.53
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
1

Вывести все комбинации чисел от 1 до 7 с помощью рекурсии

19.05.2012, 03:17. Просмотров 7119. Ответов 11
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста с задачкой: вывести все комбинации чисел от 1 до 7 с помощью рекурсии в С++. Заранее ОГРОМНОЕ спасибо!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 03:17
Ответы с готовыми решениями:

Вывести все комбинации из трех чисел идущих подряд
здравствуйте подскажите в чем ошибка вот задача Дан вектор {0, 1, 3, 3, 6,...

С помощью рекурсии вывести все числа от 1 до введенного пользователем числа k
С помощью рекурсии вывести все числа от 1 до введенного пользователем числа k....

Вывести все возможные комбинации трех натуральных чисел x, y и z до 36 с определенными условиями
Всем привет, ребят, нужно написать программу вывода на экран всех возможных...

Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел
Доброго всем времени суток.Я делаю только первые шаги в программировании.Начал...

Вывести все комбинации из указанного набора чисел, сумма которых не превышает заданное число
Всем привет. Поставлена такая задача - предположим, что есть массив из трех...

11
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
19.05.2012, 04:19 2
Цитата Сообщение от juli_nabieva Посмотреть сообщение
Здравствуйте. Помогите пожалуйста с задачкой: вывести все комбинации чисел от 1 до 7 с помощью рекурсии в С++. Заранее ОГРОМНОЕ спасибо!!!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <algorithm>
 
int main(){
  int arr[7] = {1, 2, 3, 4, 5, 6, 7};
  do{
      for (int i=0; i < 7; i++)
         std::cout << arr[i];
      std::cout<< " ";
  }while(std::next_permutation(arr, arr + 7));
  return 0;
}
Но только это без рекурсии.
1
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
19.05.2012, 12:38  [ТС] 3
А с рекурсией никак??
0
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
19.05.2012, 13:08 4
Цитата Сообщение от juli_nabieva Посмотреть сообщение
А с рекурсией никак??
с рекурсией:
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
#include <iostream>
using namespace std;
bool a[7];
int b[7];
void rec(int t)
{
    int i;
    if(t==7)
    {       
        for(i=0; i<7; i++)
            cout<<b[i];
        cout<<" ";
    }
    for(i=0; i<7; i++)
        if(!a[i])
        {
            b[t]=i+1;
            a[i]=true;
            rec(t+1);
            a[i]=false;
        }
} 
 
int main(){
  rec(0);
  return 0;
}
2
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
19.05.2012, 13:29  [ТС] 5
спасибо огромное!!!!
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
19.05.2012, 14:50 6
Так проще)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int rec(int n)
{
 
    std::cout<<n<<" ";
    if (n<6) return rec(n+1);
    else return n+1;
    
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::cout<<rec(1); //Начало отсчета = 1
    std::cout<<'\n';
    system("PAUSE");
    return 0;
 
}
0
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
19.05.2012, 14:53 7
Цитата Сообщение от daslex Посмотреть сообщение
Так проще)
проще, но как-то скромно все комбинации выдает.
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
19.05.2012, 15:00 8
В смысле скромно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include "iostream"
 
int rec(int n, int m)
{
 
    std::cout<<n<<" ";
    if (n<m) return rec(n+1,m);
    else return n+1;
    
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n,m;
    std::cin>>n>>m;
    std::cout<<rec(n,m-1); //Любой выбранный диапазон целых чисел от n до m
    std::cout<<'\n';
    system("PAUSE");
    return 0;
 
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
19.05.2012, 15:02 9
Цитата Сообщение от daslex Посмотреть сообщение
Так проще)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int rec(int n)
{
 
    std::cout<<n<<" ";
    if (n<6) return rec(n+1);
    else return n+1;
    
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::cout<<rec(1); //Начало отсчета = 1
    std::cout<<'\n';
    system("PAUSE");
    return 0;
 
}
Как бы комбинация чисел имеет 7! вариантов. А у вас всего-навсего не хватает 5039 вариантов. Но начало уже положено ;-)
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
19.05.2012, 15:03 10
В задании сказано не про семизначные числа, а про числа от сих и до сих)) Так что так проще
0
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
19.05.2012, 15:07 11
Цитата Сообщение от daslex Посмотреть сообщение
В задании сказано не про семизначные числа, а про числа от сих и до сих)) Так что так проще
Сказано найти комбинации чисел из цифр от 1 до 7.
Вот смотрите: у вас 3 шарика, красный (к), голубой(г) и зеленый(з)
Вам нужно найти все комбинации этих шариков.
Вы что, просто поставите к г з и все? Это будет лишь одна комбинация возможной расстановки. А все выглядят вот так:
к г з
к з г
г к з
г з к
з к г
з г к
1
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
07.06.2012, 12:20  [ТС] 12
Помогите, пожалуйста, написать программу на С.
Вот условие:
Из входного потока (терминала или файла) поступает текст, состоящий из слов, которые разделены пробелами. Между словами может быть более одного пробела.
Разобрать текст по символам, упорядочив его путем сортировки двоичным деревом. Под символами в данном случае подразумеваются лишь те, которые входят в слова. Дерево представить в виде объекта, в который включить следующие методы:
• построить дерево по тексту, заданному в файле;
• удалить поддерево с корнем, значение в котором равно заданному;
• вывести дерево на экран в наглядном виде.
• Сохранить-восстановить дерево.
Кроме этих, в объект включить метод:
- Подсчитать количество уровней в заданном поддереве, считая корень.
0
07.06.2012, 12:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2012, 12:20

С помощью рекурсии вывести на экран весь диапазон между заданными числами
Ребята помогите понять рекурсию, буду очень благодарен! Например задача:...

Все комбинации чисел от 1 до 4
Все комбинации чисел от 1 до 4. Как сделать:)? 1111, 1112, 1113, 1114,...

Все возможные комбинации 5 чисел
В общем задача такая: Нужно, чтобы программа выдавала все возможные комбнации...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru