Люди, помощь нужна!
2 массива. Найти масимальную подпоследовательность с помощью указателей. C++
заранее спасибо:)
Другие языки программирования и технологии
2 массива. Найти масимальную подпоследовательность с помощью указателей
Ни тебе пример массивов, ни структуры массивов, телепаты одним словом здесь находятся. )))
#include <iostream>
#include <algorithm>
using namespace std;
template <typename T>
void GetLargestCommonSubsequence(const T* &result, int & cresult, const T * a, int ca, const T * b, int cb) {
const int solution_length = cb + 1;
int * previous = new int[solution_length];
int * current = new int[solution_length];
for (int i = 0; i < solution_length; i++) {
previous[i] = 0;
}
int max_length = 0;
const int * start = a;
for(int i = ca - 1; i >= 0; i--) {
for(int j = cb - 1; j >= 0; j--) {
if(a[i] != b[j]) {
current[j] = 0;
}
else {
const int length = 1 + previous[j + 1];
if (length > max_length) {
max_length = length;
start = a + i;
}
current[j] = length;
}
}
swap(previous, current);
}
delete[] previous;
delete[] current;
result = start;
cresult = max_length;
}
template <typename T, int N>
int CountOf(const T(&)[N]) {
return N;
}
int main() {
int a[] = { 1, 2, 3, 2, 1 };
int b[] = { 3, 2, 1, 2, 3, 2, 3 };
const int * result;
int length;
GetLargestCommonSubsequence(result, length, a, CountOf(a), b, CountOf(b));
for (int i = 0; i < length; i++) {
cout << result[i] << endl;
}
}
#include <algorithm>
using namespace std;
template <typename T>
void GetLargestCommonSubsequence(const T* &result, int & cresult, const T * a, int ca, const T * b, int cb) {
const int solution_length = cb + 1;
int * previous = new int[solution_length];
int * current = new int[solution_length];
for (int i = 0; i < solution_length; i++) {
previous[i] = 0;
}
int max_length = 0;
const int * start = a;
for(int i = ca - 1; i >= 0; i--) {
for(int j = cb - 1; j >= 0; j--) {
if(a[i] != b[j]) {
current[j] = 0;
}
else {
const int length = 1 + previous[j + 1];
if (length > max_length) {
max_length = length;
start = a + i;
}
current[j] = length;
}
}
swap(previous, current);
}
delete[] previous;
delete[] current;
result = start;
cresult = max_length;
}
template <typename T, int N>
int CountOf(const T(&)[N]) {
return N;
}
int main() {
int a[] = { 1, 2, 3, 2, 1 };
int b[] = { 3, 2, 1, 2, 3, 2, 3 };
const int * result;
int length;
GetLargestCommonSubsequence(result, length, a, CountOf(a), b, CountOf(b));
for (int i = 0; i < length; i++) {
cout << result[i] << endl;
}
}
Похожие вопросы
- многомерные массивы (c++) Как нужно объявить четырехмерный массив с помощью указателей?
- С++.Обработка строк при помощи указателей.
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- Сравнить 2 массива через рекурсию
- Массивы. как в массиве найти 3 наименьших числа не используя сортировку если можно код
- линейный массив. в линейном массиве найти два наибольших числа и переставить их помогите пожалуйста,заранее спасибо)
- С++ обработка строк при помощи указателей
- Создать функцию которая находит одинаковЫе єлементы в 2 массивах та использовать их для обработки рядов матрици.
- КАК С ГЕНЕРИРОВАТЬ ДВА МАССИВА ИЗ СЛУЧАЙНЫХ ЧИСЕЛ С ПОМОЩЬЮ RANDOM НА ЯЗЫКЕ СИ? Я смог только заполнить от 0 до 255
- задача в pascale. дан массив. Найти минимальный элемент и отсортировать все элементы стоящие после него.