我试图计算的元素数大于数组右侧的元素数。这是我的功能。

int* SurpassersKing(int input1_size, int* input1,int* output_size)
    {
        int i,k;
        int count[input1_size];
        for  (i = 0; i < input1_size; i++)
            count[i] = 0;


        for ( i = 0; i < input1_size; i++)
        {
            for ( k = i + 1; k <input1_size; k++)
                {
                        if (input1[i] < input1[k]) {
                                 count[i]++;
                        }
                }
        }

        return count;
    }

这是我的函数,我在数组中计算更大的元素。
因此,在下面的代码片段中,我编写了主函数,声明所有可验证的like output_size、counting array、i、k作为数组的索引并打印内容,然后调用counting函数。
int main() {
    int output_size;
    int* output;

    int ip1_size = 0;
    int ip1_i;
    scanf("%d\n", &ip1_size);
    int ip1[ip1_size];
    for(ip1_i = 0; ip1_i < ip1_size; ip1_i++) {
        int ip1_item;
        scanf("%d", &ip1_item);

        ip1[ip1_i] = ip1_item;
    }
    output = SurpassersKing(ip1_size,ip1,&output_size);
    int output_i;
    for(output_i=0; output_i < output_size; output_i++) {

        printf("%d\n", output[output_i]);

    }
    return 0;
}

但是我没有得到所需的输出,所以我能做些什么来改进它。

最佳答案

你计算右边数字计数的逻辑是正确的。唯一的问题是不能从函数返回这样的数组。尝试以下操作:
替换
int count[input1_size];
具有
int * count = malloc(input1_size*sizeof(int));
然后在main函数中
添加
free(output);
就在返回语句之前。

关于c - 计算数组中当前元素右侧的更大元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43131739/

10-14 19:15
查看更多