动态二维数组
哪里不对呢?{:10_269:}#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,N;
scanf("%d",&N);
int **p;
p=(int**)malloc(N*sizeof(int*));
for(i=0;i<N;i++)
{
*(p+i)=(int *)malloc(N*sizeof(int));
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&p);
}
}
int sum;
for(i=0,j=N-1;i<N,j>=0;i++,j--)
{
sum+=p;
}
for(i=0,j=0;i<N,j<N;i++,j++)
{
sum+=p;
}
sum-=p;
printf("%d",sum);
return 0;
} sum没有初始化
int sum = 0;
xieglt 发表于 2021-1-4 16:41
sum没有初始化
嗯,不过好像还有一点点问题{:10_282:} 本帖最后由 jackz007 于 2021-1-4 17:19 编辑
此题样例输入的输出分明是 30,怎么会是 25 呢?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i , j , N , ** p , s ;
scanf("%d" , & N) ;
p = (int **) malloc(N * sizeof(int *)) ;
for(i = 0 ; i < N ; i ++) * (p + i) = (int *) malloc(sizeof(int) * N) ;
for(s = i = 0 ; i < N ; i ++) {
fflush(stdin) ;
for(j = 0 ; j < N ; j ++) scanf("%d" , & p) ;
s += p ;
if(N - 1 - i != i) s += p ;
}
printf("%d\n" , s) ;
for(i = 0 ; i < N ; i ++) free(* (p + i)) ;
free(p) ;
} 一世轻尘 发表于 2021-1-4 16:51
嗯,不过好像还有一点点问题
没有free内存,造成内存泄露。 jackz007 发表于 2021-1-4 16:56
此题样例输入的输出分明是 30,怎么会是 25 呢?
中间那个数只能用一次,两个对角线重复了 xieglt 发表于 2021-1-4 16:57
没有free内存,造成内存泄露。
还是不行,哎,我已经被它折磨好几天了 xieglt 发表于 2021-1-4 16:57
没有free内存,造成内存泄露。
找到问题了,只有奇数的时候应该吧中间的减去,偶数的时候两对角线没有重复 for(i=0;i<N;i++)
{
sum += p;
if(i!=N-i-1)
sum+=p;
} 一世轻尘 发表于 2021-1-4 17:04
找到问题了,只有奇数的时候应该吧中间的减去,偶数的时候两对角线没有重复
4 楼的代码改了,看看能否过测试平台 jackz007 发表于 2021-1-4 17:20
4 楼的代码改了,看看能否过测试平台
过了过了{:10_298:}
页:
[1]