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

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

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

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

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

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

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

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

Функция Аккермана без рекурсии - 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. С рекурсией она...

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

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

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

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

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

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

Нахождение определителя матрицы n-го порядка без рекурсии - C++
Здравствуйте, мне на дом дали задачу на С++ написать программу которая находит определитель матрицы n го порядка, я довольно быстро её...

Числа Фибоначчи без использования рекурсии и массивов - C++
int a, b=0, c=1; cout&lt;&lt;&quot;Введите число Фибоначчи: &quot;&lt;&lt;endl; cin&gt;&gt;a; for(int i=2;i&lt;=(a-3);i++) { a=b+c; b=c; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
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
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
26.09.2013, 12:08     Написано рекрусивно. нужен код без рекурсии.! #5
Цитата Сообщение от AntonChik Посмотреть сообщение
а собственно в каком месте тут рекурсия?
ну в первом кусочке кода после else она была а вот в полном теле программы ее уже нет

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

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