nyoj 511 移動小球(鍊錶的簡單使用)

2021-06-08 07:11:47 字數 639 閱讀 5184

描述

給你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

輸出輸出每次詢問的球號

樣例輸入

1

6 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...