全排列 判斷棧序 火車進出站

2021-07-16 10:53:01 字數 1300 閱讀 6917

1、全排列:

(1)遞迴實現:

void myfullsort(vectordata, int k, int end)

cout << endl;

} else }

}

(2)非遞迴實現:

(3)運用stl中的函式next_permutation( ):

#include #include #include using namespace std;

//stl —— next_permutation()

void permutation(vectorarray, int len)

cout << endl;

} while (next_permutation(array.begin(), array.end())); //next_permutation是根據數字大小在找下乙個排列

}int main()

; permutation(a, a.size());

return 0;

}

(4)如果資料中有重複數字,則需要剔除重複的全排列序列:

bool isswap(vector& pszstr, int nbegin, int nend)

return true;

}void myfullsort(vectordata, int k, int end)

cout << endl;

} else

}}}

2、判斷棧序:

bool  ispopsort(vectorpush, vectorpop)

} return tmp.empty();

}

3、火車進出站:(上面兩者的組合)

#include #include #include using namespace std;

vectorinput;

bool ispopsort1(vectorpush, vectorpop)

} return tmp.empty();

}void myfullsort1(vectordata, int k, int end)

cout << endl;

} }else }

}int main()

myfullsort1(input, 0, n - 1);

return 0;

}

火車進出站加全排列

題目描述 給定乙個正整數n代表火車數量,0輸出描述 輸出以字典序從小到大排序的火車出站序列號,每個編號以空格隔開,每個輸出序列換行,具體見sample。示例1輸入複製3 1 2 3 輸出複製 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 include include include ...

火車進出站問題 棧

編號為1,2,n的n輛火車依次進站,給定乙個n的排 列,判斷是否是合法的出站順序?思路 先把出站順序存入,用棧模擬進站的火車,按照出站的順序,依次pop出來,判斷 最後的出站數量能否達到n。include include include using namespace std const int m...

棧 卡特蘭數 火車進出棧問題

傳送門 題意 一列火車n節車廂,依次編號為1,2,3,n。每節車廂有兩種運動方式,進棧與出棧,問n節車廂出棧的可能排列方式有多少種。資料範圍 1 n 60000 輸入樣例 3輸出樣例 5思路 進出棧問題 序列問題 路徑問題。這顯然是上一道火車進棧的公升級版,資料太大不能再進行遞迴處理了。問題轉換 尋...