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

Задача "Максимальный подпалиндром" не могу поймать ошибку. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли исправит с главной на побочную? http://www.cyberforum.ru/cpp-beginners/thread418188.html
Заполнить массив по следующему правилу. Числа на диагонали, идущей из правого верхнего в левый нижний угол равны 1; числа, стоящие выше этой диагонали, равны 0; числа, стоящие ниже этой диагонали, равны 2 По главной диагонали вроде работает, по побочной никак #include<iostream.h> #include<stdlib.h> const int n=100, m=100; int main() { int i,j, n1, m1;
C++ Вычитание двух массивов Напишите функцию, которая поэлементно вычитает из первого массива второй, и записывает результаты вычитаний в третий массив. Массивы содержат элементы типа int. Каждый массив передается в функцию через пару параметров - указатель на первый элемент, и размер массива.  Также напишите две функции: первая - для вывода элементов массива на экран и вторая - для ввода с клавиатуры.  ... http://www.cyberforum.ru/cpp-beginners/thread418186.html
точки на плоскости C++
очень срочно нужно задачки для зачета(С#)... Задача1: Найти такую точку заданного на плоскости множества точек,сумма расстояний от которой до остальных минимальная. Задача2:Натуральное число из n цифр называется числом Армстронга,если сумма его цифр,возведенная в степень n,равна самому числу.Подсчитать все числа Армстронга из двух и трех цифр. Задача3:В двумерном массиве Х(n,m) все числа...
C++ Вставить подстроку в заданное значение
Ребята,помогите пожалуйста. Задача:Вставить подстроку в заданное значение Как я понял задано 2 массива,и вставить заданное значение в другой массив.
C++ compile-time таймштамп билда http://www.cyberforum.ru/cpp-beginners/thread418177.html
Может можно сделать проще? template <int pos> struct __time__ { static const char c = __TIME__; }; template <int pos>
C++ Методы вычисления интегралов Уважаемые товарищи программисты, обращаюсь к вам уже не первый раз с надеждой что вы мне поможете. Мне нужно написать программу: Массив (у0,у1, ... ,уn) представляет собой значения некоторой функции на отрезке , причем a=y0,b=yn. Создать класс Integral, в котором реализовано вычисление определенного интеграла методом прямоугольников, методом трапеций и методом Симпсона. Буду очень... подробнее

Показать сообщение отдельно
danielgreen
Сообщений: n/a

Задача "Максимальный подпалиндром" не могу поймать ошибку. - C++

26.12.2011, 19:34. Просмотров 1830. Ответов 1
Метки (Все метки)

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

Формат входных данных:
Во входном файле находится строка длиной не более 100 символов, состоящая из заглавных букв латинского алфавита.

Формат выходных данных:
Выведите на первой строке выходного файла длину максимального подпалиндрома, а на второй строке сам максимальный подпалиндром. Если таких подпалиндромов несколько, то ваша программа должна вывести любой из них.

Пример
Входные данные:
HTEOLFEOLEH


Выходные данные:
7
HELOLEH

Сама задача тут.
Тут лежит exe файл, кто может потестите плизз, найдёте не рабочие тесты, киньте в ответы.

Код проги, если не лень разбираться:

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
76
77
#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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru