Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
renme1
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 3
#1

Написано рекрусивно. нужен код без рекурсии.! - C++

25.09.2013, 10:55. Просмотров 384. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int per (int k)
         {
           int i;
           for(i=1;i<=n;i++)
                  {
                   if (color[i]==0)
                      { 
                       color[i]=1;
                       p[k]=i;
                       if(k==n)
                         {
                           qout(p,n);
                         }
                       else per(k+1);
                       color[i]=0;
                      } 
                  }
Добавлено через 14 минут
ПОЛНЫЙ КОД.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
 
using namespace std;
int SCORE(1);
int n;
int p[10], color[10];
char M[10];
 
int qout (int* p, int n)
         {
          for(int i=1;i<=n;i++)
          cout << M[p[i]-1];
          cout<<endl;
          return 0;
         }
 
int per (int k)
         {
           
           for(int k=0; k<n ; k++)
             
           for(int i=1;i<=n;i++)
                  {
                   if (color[i]==0)
                      { 
                       color[i]=1;
                       p[k]=i;
                       if(k==n)
                         {
                           qout(p,n);
                         }
                    
                       color[i]=0;
                      } 
                  }
return 0;
} 
 
 
 
 
int IN(char M[])
{
  cin>>M;
  n = strlen(M);
  return 0;
}
 
 
 
void main ()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
 
 
memset(color,0,sizeof(int));
 
 
IN(M);
int t(0);
while(t!=n)
    {
       SCORE =SCORE*(t+1);
       t++;
    }
cout<<SCORE<<endl;
per(1);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 10:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написано рекрусивно. нужен код без рекурсии.! (C++):

нужен ли while в рекурсии? - C++
Сказали переделать код, нужно что то сделать с while. Что не так объясните) #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Рекурсия без рекурсии - C++
Как известно с рекурсией связана маленькая скорость и проблема переполнения стека. Ее можно сымитировать с помощью обычного стека. ...

О 8 ферзях(Без рекурсии) - C++
Пытаюсь сделать задачу о 8 ферзях без рекурсии. Сделал набросок, но работает как то криво. В чем проблема? #include &lt;stdlib.h&gt; ...

Сортировка слияниеим без рекурсии - C++
Нужна сортировка слиянием без использования рекурсии. Помогите ...

Функция Аккермана без рекурсии - C++
Возможно сделать функцию Аккермана НЕ рекурсивно, а циклически? Сложность с которой я столкнулся в том что невозможно написать цикл A(0,...

Функция Аккермана без рекурсии - C++
Задача: A(0, n) = n + 1; A(m, 0) = A(m–1, 1); при m &gt; 0; A(m, n) = A(m–1, A(m, n–1)); при m &gt; 0 и n &gt; 0. С рекурсией она...

4
HedgehogLu
147 / 81 / 1
Регистрация: 04.09.2013
Сообщений: 261
25.09.2013, 13:02 #2
Вопрос?
как оно вообще пашет
C++
1
2
3
4
5
6
7
8
9
int per (int k) //вход в функцию параметр принимаемый к
         {
           
           for(int k=0; k<n ; k++)//в форе инициализируем к в 0 :) нафига тогда нам параметром к принимать?
             
           for(int i=1;i<=n;i++) 
                  {
                   if (color[i]==0)//тут вообще при n=10 будет ошибка доступа памяти.
...
т.о. проще иметь постановку задачи, чем кривоватую реализацию. Я же не знаю есть или нет в данной реализации алгоритмические ошибки. И соответственно уход от рекурсии ничего не даст.

Добавлено через 6 минут
Кстати насколько я понял для массива color в нуль устанавливается только первый элемент а остальные как бог дал при инициализации ? жестко
0
renme1
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 3
26.09.2013, 08:07  [ТС] #3
Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки.
Ограничения: 2 ≤ M≤ 8, символы - буквы латинского алфавита и цифры.
Ввод: В первой строке файла находится исходная строка.
Вывод: В первой строке вывести количество перестановок, в следующих строках вывести в каждой строке по одной перестановке. Перестановки можно выводить в любом порядке. Повторений и строк, не являющихся перестановками исходной, быть не должно.

pawet norm.mne nado bez rekursii. a y men9 c pekysei
0
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
26.09.2013, 08:35 #4
а собственно в каком месте тут рекурсия?
0
HedgehogLu
147 / 81 / 1
Регистрация: 04.09.2013
Сообщений: 261
26.09.2013, 12:08 #5
Цитата Сообщение от AntonChik Посмотреть сообщение
а собственно в каком месте тут рекурсия?
ну в первом кусочке кода после else она была а вот в полном теле программы ее уже нет

Добавлено через 18 минут
Блин то ли я мудрю то ли еще что. Разъясните плз что значит
Цитата Сообщение от renme1 Посмотреть сообщение
состоящая из M попарно различных символов
- в строке нет одинаковых символов?
0
26.09.2013, 12:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2013, 12:08
Привет! Вот еще темы с ответами:

Написать функцию без рекурсии - C++
bool st(int a) { if(a==1) return true; else return ((a%5==0) ? st(a/5) : false); }

Разложение на простые множители без рекурсии - C++
Задача такая : Надо написать две функции get_all_divisorts и get_lowest_divisor. Функция main должна вызывать get_all_divisorts ,...

Обход бинарного дерева без рекурсии - C++
нужно написать алгоритм обхода бинарного дерева без использования рекурсии, а с помощью стека. Проверить на дереве int, но в самом коде...

Нестандартная быстрая сортировка (без рекурсии) - C++
Помогите пожалуйста, нужно написать программу для одномерного массива, с помощью быстрой сотрировки без рекурсии. Если можно с...


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

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

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