找到对的数量(A [i],A [j]),使得i <1。 j和A [i] ** A [j]&gt; A [j]的** A [I]

时间:2014-03-30 10:22:09

标签: c arrays algorithm

我为以下问题编写了以下代码:

给定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语言建议代码中的更正。

2 个答案:

答案 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];
   ...