提交到oj平台显示运行错误

在Dev-c++上运行没问题,输出结果也对,但提交到oj平台上一直显示运行错误,求解答qaq
#include
int main()
{
int n,i,x,h;
int s=1;
int k=0;
scanf("%d",&n);
int a[n];
for(i=0;i
{
scanf("%d",&a[i]);
}
for(i=0;i
{
if(a[i]!=a[i-1])
{
k=k+1;
}
}
x=k;
while(k>0)
{
s=sk;
k--;
}
h=2
s/x/(x-1);
printf("%d",s/h);
return 0;
}


#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

int main()
{
    int n, i, x, h;
    int s = 1;
    int k = 0;
    int *a;//动态数组名
        scanf("%d", &n);

        //动态分配内存
        a = (int*)malloc(n * sizeof(int));
        if (!a)exit(1);

        for (i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }

        //例如n=1时,x=k=1,h = 2 * s / x / (x - 1);中分母(x-1)为0,运算错误
        if (n < 2)
        {
            printf("%d", 0);
            return 0;
        }

        for (i = 0; i < n; i++)
        {
            if (a[i] != a[i - 1])
            {
                k = k + 1;
            }
        }
        x = k;
        while (k > 0)
        {
            s = s * k;
            k--;
        }
        h = 2 * s / x / (x - 1);
        printf("%d", s / h);
    return 0;
}

OJ上显示「运行错误」一般都是数组越界,分母为0或内存分配的问题。感觉这个 n 是不是要考虑一下等于1或0的情况。

#include <stdio.h>
int main()
{
int n,i,x,h;
int s=1;
int k=0;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]!=a[i-1])
{
k=k+1;
}
}
x=k;
while(k>0)
{
s=s*k;                //这里
k--;
}
h=2*s/x/(x-1);    //这里
printf("%d",s/h);
return 0;
}

img

img


题目是这样的