Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.90
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
19.05.2012, 03:17     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #1
Здравствуйте. Помогите пожалуйста с задачкой: вывести все комбинации чисел от 1 до 7 с помощью рекурсии в С++. Заранее ОГРОМНОЕ спасибо!!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
19.05.2012, 04:19     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #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;
}
Но только это без рекурсии.
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
19.05.2012, 12:38  [ТС]     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #3
А с рекурсией никак??
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.05.2012, 13:08     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #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;
}
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
19.05.2012, 13:29  [ТС]     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #5
спасибо огромное!!!!
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
19.05.2012, 14:50     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #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;
 
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.05.2012, 14:53     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #7
Цитата Сообщение от daslex Посмотреть сообщение
Так проще)
проще, но как-то скромно все комбинации выдает.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
19.05.2012, 15:00     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #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;
 
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
19.05.2012, 15:02     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #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 вариантов. Но начало уже положено ;-)
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
19.05.2012, 15:03     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #10
В задании сказано не про семизначные числа, а про числа от сих и до сих)) Так что так проще
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
19.05.2012, 15:07     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #11
Цитата Сообщение от daslex Посмотреть сообщение
В задании сказано не про семизначные числа, а про числа от сих и до сих)) Так что так проще
Сказано найти комбинации чисел из цифр от 1 до 7.
Вот смотрите: у вас 3 шарика, красный (к), голубой(г) и зеленый(з)
Вам нужно найти все комбинации этих шариков.
Вы что, просто поставите к г з и все? Это будет лишь одна комбинация возможной расстановки. А все выглядят вот так:
к г з
к з г
г к з
г з к
з к г
з г к
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2012, 12:20     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
juli_nabieva
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 4
07.06.2012, 12:20  [ТС]     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии #12
Помогите, пожалуйста, написать программу на С.
Вот условие:
Из входного потока (терминала или файла) поступает текст, состоящий из слов, которые разделены пробелами. Между словами может быть более одного пробела.
Разобрать текст по символам, упорядочив его путем сортировки двоичным деревом. Под символами в данном случае подразумеваются лишь те, которые входят в слова. Дерево представить в виде объекта, в который включить следующие методы:
• построить дерево по тексту, заданному в файле;
• удалить поддерево с корнем, значение в котором равно заданному;
• вывести дерево на экран в наглядном виде.
• Сохранить-восстановить дерево.
Кроме этих, в объект включить метод:
- Подсчитать количество уровней в заданном поддереве, считая корень.
Yandex
Объявления
07.06.2012, 12:20     Вывести все комбинации чисел от 1 до 7 с помощью рекурсии
Ответ Создать тему
Опции темы

Текущее время: 11:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru