a a 223
344, 一共4對撲克牌。請你把它們排成一行。
要求:兩個a中間有1張牌,兩個2之間有2張牌,兩個3之間有3張牌,兩個4之間有4張牌。
請填寫出所有符合要求的排列中,字典序最小的那個。
例如:22aa3344 比 a2a23344 字典序小。當然,它們都不是滿足要求的答案。
請通過瀏覽器提交答案。「a」一定不要用小寫字母a,也不要用「1」代替。字元間一定不要留空格。
用全排列就可以做。對string裡的資料進行全排列是需要注意#include
#include
#include
using namespace std;
bool check(const string &s)
using namespace std;
int main(
)while
(next_permutation(s.begin(
),s.end())
);return0;
}
next_permutation(s.begin(),s.end())來表示全排列的開始和結束位置
string s=「223344aa」;需要這樣子按序拍才能被全排列(還沒有去搞懂為什麼。。。。)3322不能全排列,3214中 用next_permutation()進行排列1,2都沒有出現過在前面
string 字串的rfind()函式和find()函式,乙個是從後面往前找,乙個是前面往後找。下標相減,應該是後面的下標減去前面的下標,即 s.rfind(『a』)-s.find(『a』) 而不是s.find(『a』)-s.rfind(『a』)
兩個a中間有1張牌,兩個2之間有2張牌,兩個3之間有3張牌,兩個4之間有4張牌。中間有1張牌,下標相減應該差2!!
加不加const這題結果都一樣//
if(s.rfind(
'a')
-s.find(
'a')==1
&&s.rfind(
'2')
-s.find(
'2')==2
&&'3')
-s.find(
'3')==3
&&s.rfind(
'4')
-s.find(
'4')==4
)//中間有1張牌,下標相減應該差2!!
if(s.rfind(
'a')
-s.find(
'a')==2
&&s.rfind(
'2')
-s.find(
'2')==3
&&s.rfind(
'3')
-s.find(
'3')==4
&&s.rfind(
'4')
-s.find(
'4')==5
)
check(const string &s)
//引數不能在函式中被修改
check(string s)
藍橋杯 撲克排序 2014 A 6
a a 2 2 3 3 4 4,一共4對撲克牌。請你把它們排成一行。要求 兩個a中間有1張牌,兩個2之間有2張牌,兩個3之間有3張牌,兩個4之間有4張牌。請填寫出所有符合要求的排列中,字典序最小的那個。例如 22aa3344 比 a2a23344 字典序小。當然,它們都不是滿足要求的答案。請通過瀏覽...
藍橋杯 撲克序列
a a 2 2 3 3 4 4,一共4對撲克牌。請你把它們排成一行。要求 兩個a中間有1張牌,兩個2之間有2張牌,兩個3之間有3張牌,兩個4之間有4張牌。請填寫出所有符合要求的排列中,字典序最小的那個。例如 22aa3344 比 a2a23344 字典序小。當然,它們都不是滿足要求的答案。請通過瀏覽...
撲克序列 藍橋杯
請通過瀏覽器提交答案。a 一定不要用小寫字母a,也不要用 1 代替。字元間一定不要留空格。一直感覺這樣的填空題應該能用暴力方法破解就用暴力方法解,因為暴力方法思路簡單,容易實現,而且因為是填空題,對程式執行時間沒有限制,這樣就可以省下設計漂亮演算法所花費的時間。這道題也是用暴力演算法解決。用乙個長度...