描述
給你n個小球,從左到右編號依次為1,2,3,4,5,6.........n,並規定小球1的左邊的球號為n,小球n的右邊的球號為1.現在有以下3種操作:a x y表示把編號為x小球移動到編號為y的小球的左邊,b x y表示把編號為x小球移動到編號為y的小球的右邊,q 1 m為詢問編號為m的小球右邊的球號,q 0 m為詢問編號為m的小球左邊的球號。 輸入
第一行有乙個整數n(0
輸出輸出每次詢問的球號
樣例輸入
16 3a 1 4
b 3 5
q 1 5
樣例輸出
3
#include #includeusing namespace std;
struct node
nodes[10002];
int n;
void build()
nodes[1].left=&nodes[n];
nodes[n].right=&nodes[1];
}void a(int x,int y)
void b(int x,int y)
int main()}}
return 0;
}
NYOJ 511 移動小球
這道題很容易想到要構建乙個迴圈鍊錶來確定每個球的相對位置,就是操作比較繁瑣,考慮情況較多。首先要建立節點node,每個節點都有乙個初始順序order,指向左邊的node 指標left,何指向右邊的node 指標right。cpp view plain copy print?struct node n...
NYOJ 511 移動小球 模擬
解題思路 先預處理一下左右陣列,使他們滿足初始時候的左右鄰居。然後模擬移動即可。這裡需要注意的就是移動時改變左右鄰居時,要防止覆蓋問題。就是我更改某個鄰居後,不能在以後的修改中影響這個值,所以順序需要注意。在這裡錯了,找了半個小時。悲劇。如下 include include include incl...
使用鍊錶實現小球移動
初始狀態下,小球按照序號依次排列,編號為 1,2,3 n 可以執行兩種指令。其中,a x y表示吧x移到y左邊,b x y表示把x移到y右邊 指令合法 程式沒有測試大量資料 詳細描述在劉汝佳的演算法書中的第六章 樣例輸入 6 2 a 1 3 b 3 5 樣例輸出 2 1 4 5 3 6 includ...