c - 即使对于大量数据作为输入,我如何使该代码也能工作?

标签 c algorithm data-structures

这个程序工作正常,但是当输入较大的数字时出现错误。 这个问题的链接是https://www.hackerearth.com/practice/data-structures/arrays/multi-dimensional/practice-problems/algorithm/monk-and-operations/description/

#include<stdio.h>
#include<stdlib.h>
#define MAX(a,b) (((a)>(b))?(a):(b))
int main(){
    int m,n,i,j,matrsum,matcsum;
    scanf("%d %d",&m,&n);
    int a[m][n],v1,v2,v3,v4;
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            scanf("%d",&a[i][j]);
        }
    }
    scanf("%d %d %d %d",&v1,&v2,&v3,&v4);
     for(i=0;i<m;i++){
        int rsum=0,risum=0,rusum=0;
        for(j=0;j<n;j++){
            rsum=rsum+abs(a[i][j]);
            risum+=abs(a[i][j]+v1);
            rusum+=abs(v2);
        }
        matrsum+=MAX(rsum,MAX(risum,rusum));
    }
    for(i=0;i<n;i++){
        int csum=0,cisum=0,cusum=0;
        for(j=0;j<m;j++){
            csum=csum+abs(a[j][i]);
            cisum+=abs(a[j][i]+v3);
            cusum+=abs(v4);
        }
        matcsum+=MAX(csum,MAX(cisum,cusum));
    }
    printf("%d ",MAX(matrsum,matcsum));  
} 

输入示例(最坏情况) 2 2
227790993 -762740567
57519048 -247119797
266086776 904261341 -872001509 212276239

最佳答案

如果您只使用有符号整数,则可以使用 long int 而不是 int。

long 类型的大小至少为 4 个字节(32 位)。最小值为 -2,147,483,647,最大值至少为 +2,147,483,647。

您可以在此处查看一篇内容非常丰富的帖子。 What is the difference between "long", "long long", "long int", and "long long int" in C++?

关于c - 即使对于大量数据作为输入,我如何使该代码也能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59785691/

相关文章:

c - 在 C 中读取和输出 unicode

c++ - 是否有必要在声明 char const *ptr = 'const' 时使用 "some characters"?

c++ - 人工神经元程序

java - 计算 Java 中的基本操作

c++ - C++中的订单维护数据结构

c - 初始化非常大的结构的正确方法是什么?

c# - 是否有一种已知的快速算法来查找与给定数字相乘的所有数字对?

c - 算法或 C 代码实现,以找到具有 n 个或更多除数的最小正整数

Python:写入具有多个标题行的 CSV

java - 交换链表节点后递归 toString 函数的堆栈溢出