gpt4 book ai didi

c - HackerRank 上的对角线差异

转载 作者:行者123 更新时间:2023-11-30 20:09:30 26 4
gpt4 key购买 nike

我试图解决this 。我的算法在离线编译器中给出了正确的答案。我不知道错误在哪里。我对 C 语言完全陌生。

该问题要求创建一个函数来查找方阵左右对角线的绝对差。

这是我的网站解决方案。当我在线运行代码时,它给出输出 12。

int diagonalDifference(int arr_rows, int arr_columns, int** arr) {

int primary_sum, secondary_sum = 0;
for(int row,column = 0; row < arr_rows && column < arr_columns; row++, column++){

primary_sum += arr[row][column];
secondary_sum += arr[row][arr_columns - column - 1];

}

return abs(primary_sum - secondary_sum);

}

我写了一个类似的程序来进行离线测试。

#include <stdio.h>
#include <stdlib.h>

void matrix_sum(int arr_rows, int arr_columns, int arr[3][3]);
int main(void){

int arr[3][3] = {
{11, 2, 4},
{4, 5, 6},
{10, 8, -12}
};

matrix_sum(3, 3, arr);


}


void matrix_sum(int arr_rows, int arr_columns, int arr[3][3]){

int row,column = 0;
int primary_sum, secondary_sum = 0;
int digonals[3];
int s_digonals[3];

for(; row < arr_rows && column < arr_columns; row++, column++){
primary_sum += arr[row][column];
secondary_sum += arr[row][arr_columns - column - 1];

digonals[row] = arr[row][column];
s_digonals[row] = arr[row][arr_columns - column - 1];

}

printf("primary_sum = %i\n", primary_sum);
printf("secondary_sum = %i\n", secondary_sum);

for(int i = 0; i < row; i++){
printf("%i ",digonals[i]);
}
printf("\n");

for(int i = 0; i < row; i++){
printf("%i ",s_digonals[i]);
}
printf("\n%i\n", abs(primary_sum - secondary_sum) );



}

第二个程序给出了正确的结果,即 15,我不知道为什么在线编译器给出输出 12。

输入是。

3

11 2 4

4 5 6

10 8 -12

最佳答案

你的逻辑似乎是正确的。但看看这一行:

 int primary_sum, secondary_sum = 0;

primary_sum 初始化为--0 或垃圾值是什么? HackerRank 提供了一个名为“您的输出”的框,其中将您的总和显示为 18179734。我会让你从这里调试。

关于c - HackerRank 上的对角线差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51638928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com