閒聊藍橋杯JAVA 鐵軌

2021-08-17 23:20:57 字數 1503 閱讀 9961

d:現在研究這道題,之前忽略掉的。

某城市有乙個火車站,有n節車廂從a方向駛入車站,按進站的順序編號為1~n。現讓它們按照某種特定的順序進入b方向的鐵軌並駛出車站。為了重組車廂,你可以借助中轉站c。在程式中輸入車廂數目和出站的特定順序,如果可以則輸出yes,否者輸出no。

樣例輸入:51

2345

5541

2366

5432

1樣例輸出:

yesno

yes

z:這道題以前是做過的:

public

static

void

main(string args)

stackstack = new stack();

int arrpoint = 0;

for (int i = 1; i <= arrnum; i++)

}if(stack.size()==0)else

}

m:這裡主要**就是這一段,應該怎麼理解呢?

for (int i = 1; i <= arrnum; i++) 

}

為什麼每次迴圈都把i給push到stack呢?stack.push(i);

z: i 代表的是乙個編號,也就是說車廂的編號逐個押進stack中。

m:那這個while(stack.size() > 0 && stack.peek() == arr[arrpoint]){又有什麼含義呢?

z:當棧中你 最新壓進去的東西 剛好等於輸入的 列車編號第一位。那就把壓進去的東西彈出來,指向列車編號的下一位。

這個時候還會重複當前的步驟,一直到不符合為止。

這種做法可能不太好理解,再形象一點描述就是。我現在面前有ab兩串麻將:

1 2 3 4 5 6    和    6 5 4 3 2 1
現在我手上有乙個空瓶子,接下來做以下操作:

將a串的第1個 數字1 放進瓶子裡,看看瓶子 最上面的數字1 是否等於結果串 b串的第1個數字6,不相同,繼續

將a串的第2個 數字2 放進瓶子裡,看看瓶子 最上面的數字2 是否等於結果串 b串的第1個數字6,不相同,繼續

將a串的第3個 數字3 放進瓶子裡,看看瓶子 最上面的數字3 是否等於結果串 b串的第1個數字6,不相同,繼續

...將a串的第6個 數字6 放進瓶子裡,看看瓶子 最上面的數字6 是否等於結果串 b串的第1個數字6,相同,

將瓶子最上面的數字6彈出,看看瓶子 最上面的數字5 是否等於結果串 b串的第2個數字5,相同,

將瓶子最上面的數字5彈出,看看瓶子 最上面的數字4 是否等於結果串 b串的第3個數字4,相同,

...一旦 a串 為空,判斷瓶子是否為空?是的話說明yes,否則no。

m:總結一下,這題的重點就是對壓棧排序的使用,每次壓乙個就進行棧和結果串的比對,最後判斷是否能實現結果串。

閒聊藍橋杯JAVA 移動距離

d 今晚做這一道題 移動距離 x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3.當排滿一行時,從下一行相鄰的樓往反方向排號。比如 當小區排號寬度為6時,開始情形如下 12 3456 1211109 871314 15.我們的問題是 已知了兩個樓號m和n,需要求出它們之間的...

閒聊藍橋杯JAVA 加法變乘法

d 加法變乘法 加法變乘法 我們都知道 1 2 3 49 1225 現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015 比如 1 2 3 10 11 12 27 28 29 49 2015 就是符合要求的答案。請你尋找另外乙個可能的答案,並把位置靠前的那個乘號左邊的數字提交 對於示例,就是...

java 藍橋杯 趣味算式

匪警請撥110,即使手機欠費也可撥通!為了保障社會秩序,保護人民群眾生命財產安全,警察叔叔需要與罪犯鬥智鬥勇,因而需要經常性地進行體力訓練和智力訓練!某批警察叔叔正在進行智力訓練 1 2 3 4 5 6 7 8 9 110 請看上邊的算式,為了使等式成立,需要在數字間填入加號或者減號 可以不填,但不...