【发布时间】:2020-01-17 10:38:07
【问题描述】:
该程序运行良好,但在输入较大数字时出现错误。 这个问题的链接是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
【问题讨论】:
-
int是一个有符号整数,在大多数平台上它是 32 位,这意味着它的范围约为正负二十亿。如果您只处理无符号数字,请使用unsigned,您的范围从零到略高于四十亿。对于更大的数字,unsigned long long保证至少 64 位宽,并且可以处理非常大的数字。 -
问题应该包含所有必要的信息。链接应该是补充的,不是必需的。编辑问题以包括数组的大小以及元素和总和的大小。
标签: c algorithm data-structures