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

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

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

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

16.06.2012, 11:31. Просмотров 837. Ответов 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 минут
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2012, 11:31     В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз
Посмотрите здесь:

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

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

Найти слова с наибольшим количеством гласных букв - C++
Вводится строка слов, написанных латинскими буквами. Необходимо вывести слова(-о), в которых содержится наибольшее кол-во гласных букв( e y...

Найти слово с наибольшим количеством гласных букв - C++
Гляньте что не так: #include <iostream> #include <string.h> #include <conio.h> using namespace std; void main(){ char...

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

Определить строку с наибольшим количеством отрицательных элементов - C++
Здравствуйте! Помогите найти ошибку, пожалуйста =) Есть матрица, нужно определить строку с наибольшим количеством отрицательных...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 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/22349a...51972077ae7992
Миниатюры
В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз  
MilitaNt
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 21
17.06.2012, 01:17  [ТС]     В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз #3
zitxbit, спасибо)
только вот на этом тесте DACDAC выводит две строки, а нужно выдать наименьшую из них, куда вставить данное условие?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2012, 12:27     В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз
Еще ссылки по теме:

Найти в двумерном массиве строку с наибольшим количеством одинаковых элементов - C++
Помогите понять как работать с двумерными массивами. Условие задания: Найти строку с наибольшим количеством одинаковых элементов. Вот что я...

Имеется 15 строк, найти строку с наибольшим количеством слов палиндромов - C++
Заранее напишу полное задание: Больше всего меня волнуют слова палиндромы, с остальным надеюсь разобраться сам. Подскажите...

Написать программу которая в текстовом файле будет искать слова с наибольшим количеством заданны букв - C++
есть задача по с++

Дан текстовый файл ( определить слово с наибольшим количеством букв и вставить его на начало и конец строки) - C++
Дан текстовый файл определить слово с наибольшим количеством букв и вставить его на начало и конец строки. Вот мой код #include...


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

Или воспользуйтесь поиском по форуму:
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
17.06.2012, 12:27     В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз #4
Вставить условие вы не можете, поскольку критерий поиска подстроки справедлив и для "ACD" и для "CDA", эти обе подстроки не содержат повторяющихся символов.
Yandex
Объявления
17.06.2012, 12:27     В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз
Ответ Создать тему
Опции темы

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