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

Количество различных цифр в числе рекурсия - C++

Восстановить пароль Регистрация
 
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
10.01.2014, 18:19     Количество различных цифр в числе рекурсия #1
для натурального n вывести количество разных цифр, участвовавших в его
записи.

Помогите составить рекурсивную функцию,
я плохо понимаю, а зачет завтра.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int Colichestvo (int n);
 
int main()
{
    int n;
    cin>>n;
 
    return 0;
}
int Colichestvo (int n)
{
    int p=0;
    for (int i=0; i<n; i++)
        if( mas[i])
        p++;
    return p;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
10.01.2014, 18:46     Количество различных цифр в числе рекурсия #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Работает для натуральных чисел
#include <iostream>
 
int Count(int n, int b = 0)
{
    if(!n)
        return 0;
    if((1<<(n%10)) & b)
        return Count(n/10, b);
    
    b |= 1<<(n%10);
    return Count(n/10, b)+1;
}
 
int main()
{
    int n = 123456;
    std::cout << Count(n) << std::endl;
}
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
10.01.2014, 19:54  [ТС]     Количество различных цифр в числе рекурсия #3
Dani, а если число с клавиатуры вводить?
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
10.01.2014, 20:01     Количество различных цифр в числе рекурсия #4
Цитата Сообщение от Troo Посмотреть сообщение
а если число с клавиатуры вводить?
C++
1
2
int n
cin>>n
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
10.01.2014, 20:08     Количество различных цифр в числе рекурсия #5
Troo, пара слово по поводу кода Dani, он использует битмаску для хранения цифр которые уже встречались, т.к. int имеет 32 бити для 10 цифр этого более чем достаточно.
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
10.01.2014, 20:19  [ТС]     Количество различных цифр в числе рекурсия #6
S_el, это то я написала,
у меня ошибку в выводе выдает

Добавлено через 3 минуты
у меня функция стоит после главной

я добавила её название перед мейном
но все равно ошибка,

а если перед главной функцию оставить, то все нормально работает

Добавлено через 1 минуту
Dani, а не могли бы вы объяснить что в функции происходит?

C++
1
2
3
4
5
6
7
8
9
10
int Count(int n, int b = 0)
{
    if(!n)
        return 0;
    if((1<<(n%10)) & b)
        return Count(n/10, b);
    
    b |= 1<<(n%10);
    return Count(n/10, b)+1;
}
Yandex
Объявления
10.01.2014, 20:19     Количество различных цифр в числе рекурсия
Ответ Создать тему
Опции темы

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