一种程序,用于确定使用c语言编写回文回廊的最小插入次数。我得到的错误是标准输出丢失

时间:2018-08-21 10:42:19

标签: c string output stdout

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

请尽快回复。 标准输入有什么问题,在某些编译器中可以正常工作。

1 个答案:

答案 0 :(得分:0)

这是一个问题。

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

int n;
char a[n];

这将导致不确定的行为。而是在读取a之后声明n