c++ - 谁能告诉我第一个代码和第二个代码之间的区别?
问题描述
谁能告诉我第一个代码和第二个代码之间的区别?
第一个适用于(https://codeforces.com/problemset/problem/189/A)剪彩问题,而另一个不起作用。
1-
ll s(ll nn)
{
if (nn < 0)
return -1e9;
else if (nn == 0)
return 0;
t= max({ s(nn - a) + 1, s(nn - b) + 1, s(nn - c) + 1 });
return t;
}
2-
ll t = -1e9;
ll s(ll nn)
{
if (nn < 0)
return -1e9;
else if (nn == 0)
return 0;
t = max(s(nn - a) + 1, t);
t = max(s(nn - b) + 1, t);
t = max(s(nn - c) + 1, t);
return t;
}
解决方案
不同之处在于,虽然函数在第一个片段中s
计算,但第二个版本计算.max(...)
max(..., t)
为什么不声明t
为局部变量?
推荐阅读
- laravel - How to display the array element to view
- c++ - 工作范围究竟如何?
- php - 如何将输入字段设置为只读或输入字段
- validation - 在领域驱动设计中应该将输入验证放在哪里?
- reactjs - React 找不到模块“react-vis”的声明文件
- kubernetes - Kubernetes 中 OrientDB 的 StatefulSet 卷挂载
- d3.js - D3js水平条形图:如何在每个条的末尾添加数据中的数字?
- java - 将“破管道”字符从 ASCII 转换为 EBCDIC 以进行 Java/旧版实现
- vue.js - 在 vue App 中使用 Axios GET 和 Authorization Header
- php - 无法从 ZF2 Twitter 用户搜索中获取派生属性