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

Программа на рекурсию - Перестановка ! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функции языка с++ и считывание данных в массив http://www.cyberforum.ru/cpp-beginners/thread328992.html
Помогите найти ошибку в решении задачки на функции с++ и хранение данных в массиве. Программа должна запрашивать ввод данных (счета при какой-то игре) и сохранять их в массив, после чего считать средний результат. Счет данных и подсчет среднего значения должны управляться отдельными функциями. Максимальное кол-во данных - 10. У пользователя должна быть возможность прерывать ввод данных при вводе...
C++ Пмогите допилить програмку #include <iostream> using namespace std; int main() { struct list { int data; list *next; list *prev; }; list *cur=0; http://www.cyberforum.ru/cpp-beginners/thread328976.html
C++ Форматирование тексту + ошибки + лишнее
Вот задача + решение // xz.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl;
Функции языка с++ C++
Пожалуйста не поленитесь, прочитайте всё и помогите :) . Заранее СПАСИБО! Разработайте функцию calculate(), принимающую два значения типа double и указатель на функцию, которая принимает в качестве аргументов два значения типа double и возвращает значение типа double. Функция calculate() также должна иметь тип double. Она должна возвращать значение, вычисляемое функцией, на которую указывает...
C++ Считывание файла http://www.cyberforum.ru/cpp-beginners/thread328917.html
Как можно считать из файла строку 110011, как массив чисел, заранее спасибо!
C++ пожалуйста сделайте На заводе выпускается несколько наименований деталей. Сведение о деталях включают код детали, количество выпущенных деталей, номер месяца выпуска. Вывести информацию о продукции, выпущенной заданным цехом за последний месяц!!!!!!!!!!!!!!!!!!!!!!!!!! пожалуйста сделайте умоляю (((((((((((((((((((((НА Vizual C++ подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.07.2011, 05:44     Программа на рекурсию - Перестановка !

Не по теме:

Цитата Сообщение от Пират-Ромка Посмотреть сообщение
Надеюсь услышать не глупые советы в стиле - решается простой рекурсией, или что тут всё просто как два пальца
Цитата Сообщение от Пират-Ромка Посмотреть сообщение
Хотел бы увидеть полное решение на СИ
Вы все такие непосредственные...


Вот решение с рекурсией (ввод-вывод из файла сделаешь сам):
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void permutation(char*, size_t, size_t);
 
int chars_unique(const char*);
 
int main(int argc, char* argv[])
{
    size_t i, len;
        
    if(argc == 1)
    fprintf(stderr, "Usage: %s STRING ...\n", *argv), exit(1);
 
    for(i = 1; i < argc; ++i)
    {
    printf("String `%s' permutations:\n", argv[i]);
    
    if(!chars_unique(argv[i]))
        fprintf(stderr, "String `%s' contains duplicating characters\n", argv[i]);
    else
    {
        len = strlen(argv[i]);
        permutation(argv[i], len, len);
    }
    putchar('\n');
    }
 
    exit(0);
}
 
int chars_unique(const char* str)
{
    const char *i, *j;
    
    for(i = str; *i; ++i)
    for(j = i + 1; *j; ++j)
        if(*i == *j)
        return 0;
    return 1;
}
 
void swap(char* s, size_t i, size_t j)
{
    char t = s[i];
    s[i] = s[j];
    s[j] = t;
}
 
void permutation(char* str, size_t n, size_t length)
{
    size_t i;
    
    if(n)
    {
    permutation(str, n - 1, length);
    for(i = n - 1; i >= 1; --i)
    {
        swap(str, n - 1, i - 1);
        permutation(str, n - 1, length);
        swap(str, n - 1, i - 1);
    }
    } else {
    puts(str);
    }
}
Пример:
Код
[nameless@desktop c]$ ./sample IOX 123
String `IOX' permutations:
IOX
OIX
IXO
XIO
XOI
OXI

String `123' permutations:
123
213
132
312
321
231

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