
Симметричная последовательность С++ Последовательность чисел назовем симметричной, если она
одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными: 1 2 3 4 5 4 3 2 1 1 2 1 2 2 1 2 1 Вашей программе будет дана последовательность чисел. Требуется определить, какое минимальное количество и каких чисел надо приписать в конец этой последовательности, чтобы она стала симметричной. Входные данные Сначала вводится число N — количество элементов исходной последовательности (1≤N≤100). Далее через пробел идут N чисел — элементы этой последовательности, натуральные числа от 1 до 9. Выходные данные Выведите сначала число M — минимальное количество элементов, которое надо дописать к последовательности, а потом M чисел (каждое — от 1 до 9) — числа, которые надо дописать к последовательности. Примеры Ввод Вывод 5 1 2 3 4 5 4 4 3 2 1 9 1 2 3 4 5 4 3 2 1 0 5 1 2 1 2 2 3 1 2 1

Ответы на вопрос

Ответ:
сори что поздно но вроде бы я решил ток щас
Объяснение:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a;
cin >> a;
vector <int> v(a);
vector <int> ans;
vector <int> empty;
for (int i = 0; i < v.size(); i++) {
cin>>v[i];
}
int d = a - 1;
bool isparity = a%2 == 1;
for (int i = 0; i < v.size(); i++) {
if (v[i] == v[d] && (i!=d || (isparity && i == a/2))) {
d--;
}
else if (i!=d && i!=a-1) {
ans = empty;
for (int j = 0; j <= i; j++) {
ans.push_back(v[j]);
}
}
else {
ans = empty;
for (int j = 0; j < i; j++) {
ans.push_back(v[j]);
}
}
}
cout<<ans.size()<<endl;
for (int i = ans.size()- 1; i >= 0; i--) {
cout<<ans[i]<<" ";
}
return 0;
}



Для решения этой задачи вам потребуется написать программу на C++, которая анализирует данную последовательность чисел и определяет минимальное количество и значения чисел, которые нужно добавить в конец последовательности, чтобы она стала симметричной. Вот пример решения задачи:
cpp#include <iostream>
#include <vector>
int main() {
int N;
std::cin >> N;
std::vector<int> sequence(N);
for (int i = 0; i < N; i++) {
std::cin >> sequence[i];
}
std::vector<int> result;
int M = 0;
// Проверка симметричности и поиск чисел для дополнения
for (int i = N - 1; i >= 0; i--) {
result.push_back(sequence[i]);
M++;
bool is_symmetric = true;
for (int j = 0; j < M; j++) {
if (result[j] != result[M - 1 - j]) {
is_symmetric = false;
break;
}
}
if (is_symmetric) {
break;
}
}
// Вывод результата
std::cout << M << std::endl;
for (int i = 0; i < M; i++) {
std::cout << result[i] << " ";
}
return 0;
}
Эта программа сначала считывает входные данные, затем начинает собирать последовательность, добавляя числа с конца и проверяя симметричность после каждого добавления. Как только последовательность становится симметричной, программа выводит минимальное количество чисел, которое нужно добавить, и сами числа.
Примеры ввода и вывода, которые вы предоставили, будут работать с этой программой.


Похожие вопросы







Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili