#27061: 陣列解法


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a229. 括號匹配問題 -- 名題精選百則 | From: [27.52.42.7] | 發表日期 : 2021-09-11 15:55

其他人寫的解題報告似乎都是用dfs解決,如果像我一樣不會或是不想用dfs,可以參考我的方法:

1. 建立一個長度為N的陣列,代表左括號的位置,一開始陣列是[1, 2, 3, ..., N]

2. 先輸出初始的括號組合

3. 檢查最後一個左括號是否能往右移一位,如果不能就往前面檢查。如果可以,就把這個左括號往右移一位,後面所有左括號都移到這個左括號後面,然後輸出現在的組合

4. 如果所有左括號都不能再往右移動了,就代表所有的組合都輸出過了

 
#27066: Re:陣列解法


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a229. 括號匹配問題 -- 名題精選百則 | From: [27.52.42.7] | 發表日期 : 2021-09-11 19:42

其他人寫的解題報告似乎都是用dfs解決,如果像我一樣不會或是不想用dfs,可以參考我的方法:

1. 建立一個長度為N的陣列,代表左括號的位置,一開始陣列是[1, 2, 3, ..., N]

2. 先輸出初始的括號組合

3. 檢查最後一個左括號是否能往右移一位,如果不能就往前面檢查。如果可以,就把這個左括號往右移一位,後面所有左括號都移到這個左括號後面,然後輸出現在的組合

4. 如果所有左括號都不能再往右移動了,就代表所有的組合都輸出過了

忘了說判斷是否能往右移的方式了,第i個左括號的位置如果小於2*i就代表能往右移,大於等於2*i無法往右移(從零開始計算)

 
#35765: Re: 陣列解法


115205@tchcvs.tw (114級115205資2班.張楷昊)

學校 : 國立臺中高級家事商業職業學校
編號 : 233256
來源 : [111.252.111.133]
最後登入時間 :
2024-04-24 15:22:06
a229. 括號匹配問題 -- 名題精選百則 | From: [36.235.183.43] | 發表日期 : 2023-06-16 00:47

其他人寫的解題報告似乎都是用dfs解決,如果像我一樣不會或是不想用dfs,可以參考我的方法:

1. 建立一個長度為N的陣列,代表左括號的位置,一開始陣列是[1, 2, 3, ..., N]

2. 先輸出初始的括號組合

3. 檢查最後一個左括號是否能往右移一位,如果不能就往前面檢查。如果可以,就把這個左括號往右移一位,後面所有左括號都移到這個左括號後面,然後輸出現在的組合

4. 如果所有左括號都不能再往右移動了,就代表所有的組合都輸出過了

要怎麼確定左括號不能再移動

 
ZeroJudge Forum