关于swap交换操作的新方法
2024-09-02 00:38:35
swap:
在oi中,swap用于交换两个变量的数值。
初学oi时,我们这样操作:
也就是说,需要一个temp变量来寄存x或y的值,因为当一个变量被赋值成为另一个变量时,没有temp它的值会丢失。
貌似很基础的亚子。
进阶版:
进阶版swap不在需要中间变量temp,常数也更优:
具体是这样的:
int sswap(int &x, int &y)
{
x ^= y ^= x ^= y ;
}
原理:一个数经过两次异或后,等于自己:
实在不理解手动膜你啦。
于是我们把上面的式子疯狂展开:
还不理解的话:
这里temp就是第一步x^y的值,把他们不同的部分作为中间变量,从而在上方第3,4行分别以第一步的x值为temp异或出自己的值。
完结。
/滑稽/
最新文章
- psql-03数据类型(1)
- UNION并集运算
- Python - 利用pip管理包
- glut编译问题 (程序无法运行)
- 【Hibernate】--一对一关联、联合主键
- 异步提交form的时候利用jQuery validate实现表单验证
- matlab里plot设置线形和颜色
- UUID错误
- Unity 读取资源(图片)
- java游戏开发杂谈 - 画布和画笔
- Linux 三剑客(Awk、Sed、Grep)
- 关于TypeError: strptime() argument 1 must be str, not bytes解析
- PTA——天平找小球
- 如何正确获取MYSQL的ADO连接字符串
- Vue.js hello world
- (线段树)敌兵布阵--hdu--1166 (入门)
- TCAM CAM 说明 原理 结构 Verilog 硬件实现
- Cloudera Manger CDH 安装文档
- Web 应用简单测试方案
- C++中对已分配空间的指针调用一个类的构造函数