c - 查找满足 i < j 且 A[i]**A[j] > A[j]**A[i] 的对 (A[i], A[j]) 的数量

标签 c arrays algorithm

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

给定一个由 N 个正整数组成的序列 A,编写一个程序来查找满足 i < j 且 A[i]A[j]< 的对 (A[i], A[j]) 的数量/sup>> 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 语言代码提出更正建议。

最佳答案

声明

int N,A[N],count=0;

没有意义。在这一行中,当您分配数组 A 时,您不知道 N 的值。在知道 N 的值之后,尝试为 A 分配空间。

关于c - 查找满足 i < j 且 A[i]**A[j] > A[j]**A[i] 的对 (A[i], A[j]) 的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742811/

相关文章:

java - 生成长度为 N 的数字的所有排列

c - 带大括号和不带大括号的 switch 语句

java - 如何使用 Getopt 在不带前导连字符的情况下解析参数

c - 将字符数组作为参数传递(C 内核代码)

java - 找到连音符的四个总和问题 - 空间复杂度?

c++ - 3D vector 的高效量级计算

c - 尝试初始化时 undefined reference

c - 它是向左旋转数组的有效程序吗?

javascript - 从 ajax 调用 javascript 添加到数组 - 未定义

c++ - 在 C++ 中初始化数组