在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=2s/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;
}