#include <stdio.h>
#include <stdlib.h>
#define MAXARR 2001
#define fi "NKPALIN.INP"
#define fo "NKPALIN.OUT"
void input(char *s);
void output(int l[][], int i, int j);
int max(int a, int b);
int main()
{
char s[MAXARR] = {};
char kq[MAXARR] = {};
int l[MAXARR][MAXARR] = {};
int i,j,d;
input(s);
for (i = 0; i < sizeof (s) / sizeof (s[0]); i++ )
for (j = 0; j< sizeof (s) / sizeof (s[0]); j++) {
if (s[i] == s[j]) {
l[i][j] = l[i-1][j-1] + 1;
}
else {
l[i][j] = max(l[i-1][j], l[i][j-1]);
}
}
i = sizeof (s) / sizeof (s[0]);
j = sizeof (s) / sizeof (s[0]);
output(l[][], i, j);
return 0;
}
void input(char* s)
{
FILE *f = fopen(fi,"rt");
fscanf(f,"%s", s);
fclose(f);
}
void output(int l[][], int i, int j)
{
FILE *f = fopen(fo,"wt");
int d;
d = -1;
while (i>0 && j>0) {
if (s[i] == s[j]) {
d++;
kq[d] = s[i];
}
else {
if (l[i][j] == l[i-1][j]) {
i--;
}
else j--;
}
}
fclose(f);
}
int max(int a, int b)
{
if (a > b) return(a);
else return(b);
}
Trong hàm output mình truyền mảng l[][] như thế bị báo lỗi, thế có cách nào truyền mảng 2 chiều không ?