下面是一个示例C程序,用来在一个二维数组中寻找回文序列:
#include <stdio.h>
#include <stdbool.h>
#define ROWS 4
#define COLS 4
bool isPalindrome(int arr[], int size) {
int i, j;
for (i = 0, j = size - 1; i < j; i++, j--) {
if (arr[i] != arr[j]) {
return false;
}
}
return true;
}
int main() {
int arr[ROWS][COLS] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{3, 7, 9, 3},
{4, 3, 2, 1}
};
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
int row[COLS], col[ROWS];
// Get row values
for (int k = 0; k < COLS; k++) {
row[k] = arr[i][k];
}
// Get column values
for (int k = 0; k < ROWS; k++) {
col[k] = arr[k][j];
}
// Check if row or column is palindrome
if (isPalindrome(row, COLS)) {
printf("Palindrome found in row %d\n", i+1);
}
if (isPalindrome(col, ROWS)) {
printf("Palindrome found in column %d\n", j+1);
}
}
}
return 0;
}
在这个示例程序中,我们首先定义了一个4x4的二维数组arr,并实现了一个用来判断是否回文的函数isPalindrome。然后在main函数中,我们遍历二维数组的每一行和每一列,分别将其拷贝到行数组row和列数组col中,并调用isPalindrome函数来判断是否是回文序列。如果是回文序列,则输出相应的信息。