public
class
legalsequence
/** * 判斷乙個序列是否可由給定序列通過棧操作獲得
* @param s
* @return
*/public
static
boolean
legalsequence
(string s)}}
return
true;}
/** * 輸出abcde全排列中所有符合上面方法的序列
* @param s
*/public
static
void
arr(string s)
/** * 對數值a中p下標到q下標進行全排列
* @param a
* @param p
* @param q
*/private
static
void
arr(
char
a,int p,
int q)if(
legalsequence
(str)
) system.out.
println
(str)
;return;}
//後面的元素都要和第乙個元素進行交換,求剩餘的元素的全排練,把交換的元素再換回來
for(
int i = p; i <= q; i++)}
/** * 交換
* @param a
* @param i
* @param j
*/public
static
void
swap
(char
a,int i,
int j)
}
判斷乙個序列是否為合法序列
1.1 問題描述 假設以1 和0 分別表示入棧和出棧操作。棧的初態和終態均為空,入棧和出棧的操作序列可表示為僅由1 和0 組成的序列,稱可以操作的序列為合法序列,否則稱為非法序列。寫出乙個演算法,判定所給的操作序列是否合法。若合法,返回1,否則返回0。輸入序列的長度不超過30個操作 1.2 輸入形式...
給定入棧序列判斷給定出棧序列是否合法
題目 輸入兩個整數序列。其中乙個序列表示棧的入棧順序,判斷另乙個序列有沒有可能是對應的出棧順序。思路 用乙個輔助棧,將入棧序列按照某種順序入棧,看是否可以產生出棧序列即可。1 如果當前棧為空,且入棧序列不空,則入棧序列的下乙個元素入棧 2 如果當前輔助棧的棧頂元素不等於出棧序列的首元素,那麼入棧序列...
判斷乙個序列是否是另外乙個序列的子串行的演算法
思路一 從子串行中挨個找,找到乙個之後,擷取子串行和母序列之前的,然後繼續遞迴自身 1.先分析下找不到的情況,如果母序列從頭找到尾,也沒有找到,則視為不是其子序列 2.繼續分析找到的情況,如果找到之後,並且子串行的長度為1,則代表都找完了。3.如果這時子串行仍然還沒有找完,則擷取後繼續呼叫自身。pu...