其他人寫的解題報告似乎都是用dfs解決,如果像我一樣不會或是不想用dfs,可以參考我的方法:
1. 建立一個長度為N的陣列,代表左括號的位置,一開始陣列是[1, 2, 3, ..., N]
2. 先輸出初始的括號組合
3. 檢查最後一個左括號是否能往右移一位,如果不能就往前面檢查。如果可以,就把這個左括號往右移一位,後面所有左括號都移到這個左括號後面,然後輸出現在的組合
4. 如果所有左括號都不能再往右移動了,就代表所有的組合都輸出過了
忘了說判斷是否能往右移的方式了,第i個左括號的位置如果小於2*i就代表能往右移,大於等於2*i無法往右移(從零開始計算)
其他人寫的解題報告似乎都是用dfs解決,如果像我一樣不會或是不想用dfs,可以參考我的方法:
1. 建立一個長度為N的陣列,代表左括號的位置,一開始陣列是[1, 2, 3, ..., N]
2. 先輸出初始的括號組合
3. 檢查最後一個左括號是否能往右移一位,如果不能就往前面檢查。如果可以,就把這個左括號往右移一位,後面所有左括號都移到這個左括號後面,然後輸出現在的組合
4. 如果所有左括號都不能再往右移動了,就代表所有的組合都輸出過了
要怎麼確定左括號不能再移動