拼多多筆試_09.03
第一題(100%):可能大家想復(fù)雜了,這題純貪心就可以做出來,為了獲得字典序,肯定是將字符串中最前面的字符往前推進,能推進多少就推進多少,如果能夠順帶著將后面的的字符推進那就更好了,于是我創(chuàng)建了一個visited數(shù)組來標(biāo)明可不可行,當(dāng)后續(xù)字符想要往前推進的時候兩個情況,一個是k還有,一個是visited為true。
第二題(100%):這題純模擬就好了,根據(jù)輸入,判斷啥時候出界,可以用map或者set標(biāo)明是否之前到達過,如果到達過說明不可能跳出去。
第三題(100%):這題比較坑的一點就是他要的是最大字典序,我說我思路咋沒有問題提交只有8%, 后面把順序改了改就ac了,貼個代碼,這是唯一拿去本地調(diào)試了的....
#include<iostream> #include<vector> using?namespace?std; bool?check(vector<int>&?counta,?vector<int>&?countb,?vector<int>&?change){ ????int?bsize?=?countb.size(); ????vector<int>?copya(counta),?copyc(change); ?//???cout?<<?bsize?<<?endl; ????for(int?i?=?0;?i?<?bsize;?i++){ ????????if(countb[i]?!=?0){ ??//??????????cout?<<?i?<<?"?"?<<??countb[i]?<<?"?"?<<?counta[i]?<<?"?"?<<?copya[26]?<<?endl; ????????????if(copya[i]?+?copya[26]?>=?countb[i]){ ????????????????if(copya[i]?>=?countb[i]) ????????????????????copya[i]?-=?countb[i]; ????????????????else{ ????????????????????int?dis?=?countb[i]?-?copya[i]; ????????????????????copyc[i]?+=?dis; ????????????????????copya[26]?-=?dis; ????????????????????copya[i]?=?0; ????????????????} ????????????}else ????????????????return?false; ????????} ????} ????counta?=?copya; ????change?=?copyc; ????return?true; } int?main(){ ????string?s,?t; ????cin?>>?s?>>?t; ????vector<int>?counta(27,?0); ????vector<int>?countb(26,?0); ????vector<int>?chindex; ????int?ssize?=?s.size(),?tsize?=?t.size(); ????if(ssize?<?tsize){ ????????cout?<<?s?<<?endl; ????????return?0; ????} ????for(int?i?=?0;?i?<?ssize;?i++){ ????????if(s[i]?>=?'a'?&&?s[i]?<=?'z') ????????????counta[s[i]?-?'a']++; ????????else{ ????????????counta[26]++; ????????????chindex.push_back(i); ????????} ????} ????for(int?i?=?0;?i?<?tsize;?i++) ????????countb[t[i]?-?'a']++; ????vector<int>?change(26,?0); ????while(check(counta,?countb,?change)){ ????} ????for(int?i?=?0;?i?<=?25;?i++){ ????????while(change[i]){ ????????????int?index?=?chindex.back(); ????????????chindex.pop_back(); ????????????s[index]?=?i?+?'a'; ????????????change[i]--; ????????} ????} ????while(!chindex.empty()){ ????????int?index?=?chindex.back(); ????????chindex.pop_back(); ????????s[index]?=?'z'; ????} ????cout?<<?s?<<?endl; ????return?0; }第四題(0):時間不夠用,只不過就是菜,也沒有騙到分,大佬們可以在評論區(qū)說一下第四題思路,我感覺可能這題可能有公式或者需要進行分組 再dp。