您的位置:首页 > 其它

短码之美

2014-04-14 14:39 176 查看
       看了《短码之美》一书,果真如封面所示——“编程达人的心得技法”。

怎么说呢,算是学到了一些技巧吧,为了达到究极的短码效果,各种运算揉捏在一起,总有点邪门歪道,衣冠不整的感觉= =!

       总的来说是这样的,首先尽量找出规律来,接着写代码,写完瘦身,好了以后再从规律中找更短的规律,就这么while下去,直到extremity才收手。

就比如说POJ 1000:http://poj.org/problem?id=1000【Calculate a+b】

一般看到这种题习惯地写上:
// C style
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d",a+b);
return 0;
}


提交一下,恩,114B,蛮短的。
Run IDUserProblemResultMemoryTimeLanguageCode LengthSubmit Time
10381508shengrui1000Accepted164K0MSC114B2012-07-05 14:02:15
在GCC这个编译器中,是可以省略#include头文件的,另外,C99标准中的规定,main函数不写return语句时仍会返回0,所以不写return语句也没有问题。再来去掉多余的空格和换行。现在呢?
int main(){int a,b;scanf("%d %d",&a,&b);printf("%d",a+b);}


 结果如下:
Run IDUserProblemResultMemoryTimeLanguageCode LengthSubmit Time
10381563shengrui1000Accepted164K0MSC58B2012-07-05 14:10:05
少了一半。完美!

还能优化:

1.在GCC中,省略了全局变量的类型,就会自动视为int类型。

2.scanf("%d %d",&a,&b); 期间的“%d %d”中的空格可以省略。

3.balabala...

这里有一个奇葩的思维,就是把输入的东西当做字符串来处理 = =!
Run IDUserProblemResultMemoryTimeLanguageCode LengthSubmit Time
10381269shengrui1000Accepted160K16MSC41B2012-07-05 13:27:58
main(n){gets(&n);printf("%d",n%85-43);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: