0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 10
1

Найдите ошибку в коде С++

25.11.2015, 01:05. Показов 575. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот задачка, почему-то не проходят все тесты, только 55%, в чем может быть дело?
Сайт - http://www.e-olymp.com/ru/problems/1740
называется последовательность символов из данной строки, не обязательно идущих подряд, являющаяся палиндромом. Например, HELOLEH является подпалиндромом строки HTEOLFEOLEH. Напишите программу, находящую в данной строке подпалиндром максимальной длины.
Входные данные
Во входном файле находится строка длиной не более 100 символов, состоящая из заглавных букв латинского алфавита.
Выходные данные
Выведите на первой строке выходного файла длину максимального подпалиндрома, а на второй строке сам максимальный подпалиндром. Если таких подпалиндромов несколько, то ваша программа должна вывести любой из них.
Кто поможет найти ошибку, буду очень благодарна!
КОД:
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
73
74
75
#include<cstdio>
const int l = 1001;
int a[l][l];
char s1[l], s2[l], p[l];
int max (int i, int j)
{
   if (i > j)
   return i;
   else
   return j;
}
 
int len_str(int n)
{
   for (int i = n; i >= 0; i--)
    for (int j = n; j >= 0; j--)
   {
    if ((s1[i] == '\0') || (s2[j] == '\0'))
     a[i][j] = 0;
    else
     {
      if (s1[i] == s2[j])
       a[i][j] = a[i+1][j+1] + 1;
      else
        a[i][j] = max (a[i+1][j], a[i][j+1]);
     }
   }
return a[0][0];
}
 
void s_pal(int n)
{
int i = 0, j = 0, k = 0;
while (k < n)
{
if (a[i][j+1] == a[i][j])
j++;
else
{
if (a[i+1][j] == a[i][j])
i++;
else
{
p[k] = s1[i];
k++;
i++;
j++;
}
}
}
 
}
 
int main()
{
int n, lp;
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
n = 0;
while (!feof(stdin))
{
s1[n] = getchar();
n++;
}
s1[n-1] = '\0';
for (int i = 0; i < n; i++)
s2[n-i-2] = s1[i];
s2[n-1] = s1[n-1];
lp = len_str(n);
for (int i = 0; i < n; i++)
s_pal(lp);
printf("%d\n", lp);
printf("%s", p);
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2015, 01:05
Ответы с готовыми решениями:

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

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

Найдите ошибку в коде с++
Есть задача: Найти наиболее близкий к среднему арифметическому элемент среди всех элементов матрицы...

Найдите ошибку в коде
#include &lt;bits/stdc++.h&gt; using namespace std; int n,m,c=0; bool pos ={false}; vector &lt;vector...

0
25.11.2015, 01:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2015, 01:05
Помогаю со студенческими работами здесь

Найдите ошибку в коде
Нужно написать в бинарный файл последовательность типа {x}_{i}=\sum_{k=0}^{i-1}...

Найдите ошибку в коде
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; void main() { int M,i;...

Найдите ошибку в коде(абстрактный базовый класс)
Задание:Создать абстрактный базовый класс Container с виртуальными функциями вставки и ...

Палиндром: найдите ошибку в коде рекурсии и объясните
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; bool palindrome(string *m, int i,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru