Нахождение палиндромов в матрице
#include <conio.h>
#include <iostream>
using namespace std;
int main() {
double a[100][100];
int n;
cout << "n: ";
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
cout << "massive: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << "\t";
}
cout << endl;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] == a[j][n - 1 - i]) {
cout << "Palindrom";
} else {
}
}
}
}
В последнем цикле не могу организовать поиск в каждой строке. Либо ищет только в 1, либо все что не нужно.
Ответы (1 шт):
Автор решения: Павел Ериков
→ Ссылка
Если вам нужно найти строки в матрице, которые являются палиндромами, то вот пример кода с комментариями:
bool isPalindrome = true;
for (int i = 0; i < n; i++) {
//Изначально скажем что i-ая строка это палиндром
isPalindrome = true;
//Проверим левую и правую часть строки на совпадения
//и если хотя бы одно не совпадение, то сразу говорим
//что строка не является палиндромом
for (int j = 0; j < n / 2 && isPalindrome; j++)
if(a[i][j] != a[i][n - 1 - j])
isPalindrome = false;
if (isPalindrome)
cout << "Строка с индексом " << i << " является палиндромом!" << endl;
else cout << "Строка с индексом " << i << " не является палиндромом!" << endl;
}