一面试题,数学薄弱没想出来
有挺多种解法,以下是chatgpt解法
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
int t = ((a - b) >> 31) & 1; // 若a < b, t为1,否则为0
int maxn = a - t * (a - b);
cout << maxn << endl;
return 0;
}
方法说明:将表达式 (a - b) >> 31 计算出来,若 a < b,则相减结果为负数,右移31位为 -1,若 a >= b,则相减结果为非负数,右移31位为 0. 再将计算结果与 1 进行与运算,如果相减结果为负数,即 a < b,则 t 为1,否则 t 为0。最后,通过 maxn = a - t * (a - b) 计算最大值。
不使用条件判断语句求两个整数的最小值也是类似的,只需将 t 的取值稍作调整即可。
需要注意的是,上述方法的效率比起普通的 if、else 等条件判断语句略低一些,因此在平常的编码中不建议使用。
坚持每天做总结
万能的chatgpt哈哈,给他做难一点的dp,做不出来
啊对对对