我为以下问题编写了以下代码:
给定N个正整数的序列A,编写程序以找到对的数目(A [i],A [j]),使得i <1。 j和A [i] A [j] &gt; A [j] A [i] (A [i]上升到幂A [j]> A [j]上升到幂A [i]。
我的代码传递了除此之外的所有测试用例:
15
0 5 2 3 0 8 7 8 0 7 1 2 4 5 3
输出应为35,但我的程序输出0。 我的计划如下:
#include<stdio.h>
int power(int x, int y);
int main()
{
int N,A[N],count=0;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%d",&A[i]);
}
for(int i=0;i<N;i++)
{
for(int j=i+1;j<N;j++)
{
if(i<j)
{
if(power(A[i],A[j])>power(A[j],A[i]))
count++;
}
}
}
printf("%d",count);
return 0;
}
int power(int x, int y)
{
int result = x;
if(y == 0) return 1;
if(x < 0 || y < 0) return 0;
for (int i = 1; i < y; ++i)
result *= x;
return result;
}
请仅使用C语言建议代码中的更正。
答案 0 :(得分:1)
声明
int N,A[N],count=0;
没有意义。在这一行,您在分配数组N
时不知道A
的值。尝试在之后为A
分配空间,了解N
的值。
答案 1 :(得分:-2)
将您的代码更改为:
int main()
{
int N,count=0,i,j;
scanf("%d",&N);
int A[N];
...