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); } }
总结:能不用数组就尽量不用,花时间在优化代码上会让你的代码更加有技巧性,即使优化后节约的时间或空间只是一丁点,也会让你取得不小的进步。长此积累,离大牛就不远了。