一个程序,用于确定在 c 语言中制作字符串回文的最小插入数.我得到的错误是缺少标准输出


#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;
}

请尽快回复。 Stadard输入有什么问题,在某些编译器中它正在工作。

这里有一个问题。

您正在使用未初始化的变量来声明数组char

int n;
char a[n];

这将导致未定义的行为。而是在阅读n后声明a

最新更新