A+B for Input-Output Practice (VIII)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 39726 Accepted Submission(s): 11871
Problem Description
Your task is to calculate the sum of some integers.
Sample Input
3 4 1 2 3 4 5 1 2 3 4 5 3 1 2 3
Sample Output
10 15 6
题目很简单,相信只要接触过计算机语言的人都能做,在这里就不讲这个题的解法了。
通过与他人代码进行对比的发现了若干个小技巧,让代码上升一个档次。
起始自己的代码如下:
Time:0MS Memory:244K Code Length:
285 B
#include <stdio.h>
int main(){
int n,m,i,a[10000];//a[ ]数组用来存要相加的若干个数
int sum;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
sum=0;
for(i=0;i<m;i++){
scanf("%d",a+i);
sum+=a[i];}//每到此处要多一次运算,a[i]在计算内是指针形式,a[i]需要进行一次转化,增加了开销。
if(n!=0)//最后一行只有一个空行
printf("%d\n\n",sum);
else
printf("%d\n",sum);
}
}
对比他人代码后自己改进的代码如下:
Time:0MS Memory:208K Code Length:279B
#include <stdio.h>
int main(){
int n,m,i,j,k;//原来的数组a[]用k代替,因为k的值只是一个临时的,它用于计算后就无效了,题目最终需要的值是sum;
int sum;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
sum=0;
for(j=0;j<m;j++){
scanf("%d",&k);//改进点
sum+=k;}
if(n!=0)
printf("%d\n\n",sum);
else
printf("%d\n",sum);
}
}
总结:能不用数组就尽量不用,花时间在优化代码上会让你的代码更加有技巧性,即使优化后节约的时间或空间只是一丁点,也会让你取得不小的进步。长此积累,离大牛就不远了。