Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
MilitaNt
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 21
1

В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз

16.06.2012, 11:31. Просмотров 953. Ответов 3
Метки нет (Все метки)

Здравствуйте. Нужна ваша помощь решить данную задачу, буду очень благодарен...

В заданной строке символов из заглавных латинских букв найти подстроку, которая включает наибольшее количество букв, встречающихся в этой подстроке в единственном экземпляре. Если таких строк несколько, выдать наименьшую по алфавиту.
Ввод из файла INPUT.TXT. В первой строке записана длина заданной строки N (1 ≤ N ≤10^6). Во второй строке - N заглавных латинских букв, определяющих заданную строку.
Вывод в файл OUTPUT.TXT. В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз.
Примеры
Ввод 1 Ввод 2 Ввод 3
5 5 6
ABBAC OLYMP DACDAC
Вывод 1 Вывод 2 Вывод 3
BAC OLYMP ACD

Добавлено через 14 минут
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2012, 11:31
Ответы с готовыми решениями:

Вывести на экран слово с наибольшим количеством гласных букв
Помогите пожалуйста, напишите программу которая выводит на экран слово с наибольшим количеством...

Поменять первую строку матрицы и строку с наибольшим количеством нулей
помогите с решением дальше.Нашел строку с найбольшим количеством нулей.Не знаю как эту строку...

Поменять в массиве местами строку с наибольшим и строку с наименьшим количеством различных элементов
Помогите, пожалуйста, решить задачу на С++ . Дан массив действительных чисел размера m на n, где m...

Найти слова с наибольшим количеством гласных букв
записывается 10 слов и потом выводится одно слово с большим количеством гласных букв

Найти слово с наибольшим количеством гласных букв
Гляньте что не так: #include <iostream> #include <string.h> #include <conio.h> using namespace...

3
zitxbit
90 / 742 / 279
Регистрация: 11.04.2012
Сообщений: 971
16.06.2012, 14:49 2
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
70
71
72
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
#define N 256
 
bool exists(char* temp);
 
int main()
{
    static char psz[256] = "ABBAC OLYMP DACDAC\0";
 
    printf("%s\n",psz);
 
    int x = 0;
    char** ppsz = new char*[N];
    memset((void*)ppsz,0x00, 4 * N);
    for (char* token = strtok(psz," "); 
        token != NULL; token = strtok(NULL," "))
    {
        if (!exists(token)) 
        { 
            ppsz[x] = new char[256]; 
            strcpy(ppsz[x++],token); 
            continue; 
        }
 
        for (int m = 0; token[m] != '\0'; m++)
            for (int q = 1; q < strlen(token); q++)
            {
                char temp[256] = "\0"; int n = 0;
                for (int i = m; i <= q; i++)
                    temp[n++] = token[i];
 
                char* psz2 = new char[256];
                strcpy(psz2, token);
 
                char* buf = psz2; int count = 0;
                while((buf = strstr(buf,temp)) != NULL && *buf != '\0')
                { count++; *buf++; }
 
                if (count <= 1 && strlen(temp) > 2 && !exists(temp))  
                {
                    ppsz[x] = new char[256];
                    strcpy(ppsz[x++], temp);
                }
            }
    }
 
    for (int z = 0; ppsz[z] != NULL; z++)
        printf("%s ",ppsz[z]);
    printf("\n");
 
    _getch();
 
    return 0;
}
 
bool exists(char* temp)
{
    bool found = false;
    for (int v = 0; temp[v] != '\0' && !found; v++)
    {
        int cnt = 1;
        for (int b = v+1; temp[b] != '\0'; b++)
            if (temp[b] == temp[v]) cnt++;
        if (cnt > 1) found = true;
    }
 
    return found;
}
http://liveworkspace.org/code/22349a2797f284ce9551972077ae7992
1
Миниатюры
В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз  
MilitaNt
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 21
17.06.2012, 01:17  [ТС] 3
zitxbit, спасибо)
только вот на этом тесте DACDAC выводит две строки, а нужно выдать наименьшую из них, куда вставить данное условие?)
0
zitxbit
90 / 742 / 279
Регистрация: 11.04.2012
Сообщений: 971
17.06.2012, 12:27 4
Вставить условие вы не можете, поскольку критерий поиска подстроки справедлив и для "ACD" и для "CDA", эти обе подстроки не содержат повторяющихся символов.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2012, 12:27

Распечатать строку с наибольшим количеством согласных букв
Написать программу, которая запрашивает у пользователя имя файла со стихотворением и распечатывает...

Вывод букв, встречающихся один раз во всех словах текста
здравствуйте,помогите,пожалуйста, разобраться с программой.Нужно чтобы программа, вводила текст и...

Файлы. Вывести строку с наибольшим количеством слов из файла
Надо вывести на экран строку с наибольшим количеством слов из файла. Program qwerty; Var f: text;...


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

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

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