問題引出:
如何將a,b交換,且不使用任何中間變數?
方法一:算術運演算法
a=a+b;
b=a-b;
a=a-b;
方法二:邏輯運算法
a=a^b;
b=a^b;
a=a^b;
若採用巨集定義完成此功能,對應有2種方法,如下示例**:
#includeusing namespace std;//巨集定義swap(x, y),使之完成交換x,y的值
#define swap1(x, y) \
(y) = (x) + (y); \
(x) = (y) - (x); \
(y) = (y) - (x);
#define swap2(x, y)\
x = x^y;\
y = x^y;\
x = x^y;
int main()
{ int a = 3, b = 5;
cout<
結果如下圖:
注意:
對於swap1,當輸入的資料是不同種型別的話,這個巨集的結果是不對的。
對於swap2,只適用於整型資料。
LCA兩種方法
lca least common ancestors 即最近公共祖先,是指在有根樹中,找出某兩個結點u和v最近的公共祖先。模板題 anc i j 表示第i個點的2 j的祖先的標號 整個過程就是兩個點往上跳到同一深度,再一起往上跳找到lca include include using namespac...
post get 兩種方法
a.定義乙個get函式 get url,headers none defget url,headers none return urlrequests url,headers headers 內部可以呼叫urlrequests 如果不寫headers headers會被預設為none b.定義乙個p...
C 定義變長陣列方法(兩種方法)
c 定義變長陣列方法 這裡說的變長陣列是指在編譯時不能確定陣列長度,程式在執行時需要動態分配記憶體空間的陣列。實現變長陣列最簡單的是變長一維陣列,你可以這樣做 includeusing namespace std int main 注意int p new int len 這一句,你不能這樣做 int...