关于压行/最短解——你可能不知道的循环优化
前(fei)言(hua)
某人压行压得我代码都不认识了。
这 Code Golf 非要不可吗
for 循环,真神!
正文
先讲 for 循环是如何运行的。
for(/*=在循环外操作,定义只能在循环内使用*/; /*条件*/; /*每次循环最后的操作*/){
//todo...
}
于是根据原理而得到以下优化。
(理论时间复杂度、空间复杂度一样,但长度变短)
- for 代替 while
while(t--)
—>
for(;t--;)
while(s.size())s.pop();
—>
for(;s.size();s.pop());
- for 内输入
for(int i=1;i<=n;i++)cin>>a[i];
—>
for(int i=1;i<=n;cin>>a[i++]);
- for 内输出
for(int i=1;i<=n;i++)cout<<a[i];
—>
for(int i=1;i<=n;cout<<a[i++]);
- 次询问,末尾换行
int t;cin>>t;while(t--) ...,cout<<'\n';
—>
int t;for(cin>>t;t;t--,puts(""))...;
The Last
while 是什么辣鸡玩意儿啊。
for 闪,拜 for!
End.
PS:
使用 40%for长度优化+30%手写栈+20%define+10%删空格/换行
——让某原本 593B 代码变成了 254B,but 还是没有 Code Golf。
本文来自博客园,作者:KukCair,转载请注明原文链接:https://www.cnblogs.com/KukCair/p/18472735
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步