#include <limits.h>
#include <stdio.h>
#include <string.h>
// A utility function to find minimum of two numbers
int min(int a, int b)
{ return a < b ? a : b; }
int MinInsertions(char a[], int l, int h)
{
if (l > h) return INT_MAX;
if (l == h) return 0;
if (l == h - 1) return (a[l] == a[h])? 0 : 1;
// Check if the first and last characters are
// same. On the basis of the comparison result,
// decide which subrpoblem(s) to call
return (a[l] == a[h])?
MinInsertions(a, l + 1, h - 1):
(min(MinInsertions(a, l, h - 1),
MinInsertions(a, l + 1, h)) + 1);
}
int main()
{
int n;
char a[n];
int x=0;
scanf("%d",&n);
if (n>=3 && n<=5000)
{
scanf("%s",a);
printf("%d", MinInsertions(a, 0, strlen(a)-1));
}
else
{ printf("wrong input");
}
return 0;
}
请尽快回复。 标准输入有什么问题,在某些编译器中可以正常工作。
答案 0 :(得分:0)
这是一个问题。
您正在使用未初始化的变量来声明char
数组。
int n;
char a[n];
这将导致不确定的行为。而是在读取a
之后声明n
。