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

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

Восстановить пароль Регистрация
 
renme1
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 3
25.09.2013, 10:55     Написано рекрусивно. нужен код без рекурсии.! #1
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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 10:55     Написано рекрусивно. нужен код без рекурсии.!
Посмотрите здесь:

C++ Обход бинарного дерева без рекурсии
C++ О 8 ферзях(Без рекурсии)
Функция Аккермана без рекурсии C++
C++ нужен ли while в рекурсии?
C++ Функция Аккермана без рекурсии
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
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 в нуль устанавливается только первый элемент а остальные как бог дал при инициализации ? жестко
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
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
26.09.2013, 08:35     Написано рекрусивно. нужен код без рекурсии.! #4
а собственно в каком месте тут рекурсия?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 12:08     Написано рекрусивно. нужен код без рекурсии.! #5
Цитата Сообщение от AntonChik Посмотреть сообщение
а собственно в каком месте тут рекурсия?
ну в первом кусочке кода после else она была а вот в полном теле программы ее уже нет

Добавлено через 18 минут
Блин то ли я мудрю то ли еще что. Разъясните плз что значит
Цитата Сообщение от renme1 Посмотреть сообщение
состоящая из M попарно различных символов
- в строке нет одинаковых символов?
Yandex
Объявления
26.09.2013, 12:08     Написано рекрусивно. нужен код без рекурсии.!
Ответ Создать тему
Опции темы

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