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

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

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

Одномерный массив - C++

06.10.2012, 20:26. Просмотров 380. Ответов 5
Метки нет (Все метки)

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
- самую длинную подпоследовательность элементов массива, которая является палиндромом.

Дополнительных массивов для преобразования данных использовать нельзя.

Как это можно реализовать, подкиньте идею. В С++ начинающий, поэтому без особых замудреностей.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерный массив (C++):

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

Массив: Все элементы массива, кратные трем, записать в одномерный массив. - C++
Дан двумерный массив размером n x n? заполненный целыми числами. Все его элементы кратные трем, записать в одномерный массив.

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив - C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив - C++
Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив. #include <iostream> using namespace std; ...

Переписать произвольный одномерный массив в другой массив в обратном порядке - C++
Помогите написать прогу, вот задание. Переписать произвольный одномерный массив в другой массив в обратном порядке.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Catstail
Модератор
22546 / 10951 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
06.10.2012, 21:18 #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
#include <iostream.h>
 
// Проверка, является ли отрезок 
// массива a[n1]-a[n2] палиндромом
 
int isPal(int *a, int n1, int n2)
{
    if (n1 > n2)
        return 1;
    else
        return (a[n1] == a[n2]) & isPal(a,n1+1,n2-1);
}
 
int main(int argc, char* argv[])
{
    int Arr[]={1,2,3,2,4,5,1,2,2,1,7,1,2,3,4,4,3,2,1,11};
 
    int i,j,l,n=sizeof(Arr)/sizeof(int);
    int iBeg=0,iEnd=0,Len=0;
 
    for (i=0; i < (n-1); i++)
        for (j=i+1; j < n; j++)
            if (isPal(Arr,i,j))
            { 
                l=j-i+1; // длина палиндрома
                if (l > Len) // если больше пред. максимума
                {
                    Len=l;  // запомним длину
                    iBeg=i; // запомним начало
                    iEnd=j; // запомним конец
                }
            }
 
     if (Len == 0) 
         cout << "No palyndroms!" << endl;
     else
     {
         cout << "The longest palyndrom is: " << endl;
         for (i=iBeg; i<=iEnd; i++)
             cout << Arr[i] << " ";
         cout << endl;
     }
 
    return 0;
}
rafiksaiti
1 / 1 / 0
Регистрация: 15.09.2012
Сообщений: 40
06.10.2012, 21:24  [ТС] #3
спасибо, буду разбираться.
Catstail
Модератор
22546 / 10951 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
06.10.2012, 21:26 #4
Обрати внимание на функцию isPal. Она рекурсивная.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.10.2012, 21:50 #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Catstail, вопрос на засыпку. Чем различаются функции
Ваша
C++
1
2
3
4
5
6
7
int isPal(int *a, int n1, int n2)
{
    if (n1 > n2)
        return 1;
    else
        return (a[n1] == a[n2]) & isPal(a,n1+1,n2-1);
}
и такая
C++
1
2
3
4
5
6
7
int isPal(int *a, int n1, int n2)
{
    if (n1 > n2)
        return 1;
    else
        return (a[n1] == a[n2]) && isPal(a,n1+1,n2-1);
}
а я бы так написал
C++
1
2
3
4
int Sym(int *a, int *b)
{
   return (a < b) ? (*a == *b) && Sym(a + 1, b - 1) : 1;
}
отвечу. если условие (a[n1] == a[n2]) будет ложным, то в случае операции && рекурсивный вызов тут же прекращается, в случае & рекурсивный вызов идет дальше, хотя уже известен результат. представьте массив из 1 000 000 элементов, первый и последний элементы которого не равны. проверка с && остановится при первом же вызове функции, c & проверка будет всех тестируемых элементов, то есть 500 000 рекурсивных вызовов.
Catstail
Модератор
22546 / 10951 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
07.10.2012, 10:43 #6
Цитата Сообщение от Thinker Посмотреть сообщение
то в случае операции && рекурсивный вызов тут же прекращается, в случае & рекурсивный вызов идет дальше
- да, правда Ваша. Я просто перепутал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 10:43
Привет! Вот еще темы с ответами:

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

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию - C++
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию. получилось вот что: #include...

Сформировать одномерный массив, удалить первый элемент с заданным значением, сдвинуть массив циклически - C++
1)сформировать одномерный массив целых чисел 2)удалить первый элемент с заданным значением 3)сдвинуть массив циклически на К элементов...

Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массив - C++
Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массива;


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.10.2012, 10:43
Ответ Создать тему
Опции темы

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