鏈接:https://www./courses/1/7/11 來源:??途W(wǎng) 請把紙條豎著放在桌?上,然后從紙條的下邊向上?對折,壓出折痕后再展 開。此時(shí)有1條折痕,突起的?向指向紙條的背?,這條折痕叫做“下”折痕 ;突起的?向指向紙條正?的折痕叫做“上”折痕。如果每次都從下邊向上? 對折,對折N次。請從上到下計(jì)算出所有折痕的?向。 給定折的次數(shù)n,請返回從上到下的折痕的數(shù)組,若為下折痕則對應(yīng)元素為"down",若為上折痕則為"up". 測試樣例: 1 返回:["down"] 代碼寫的比較簡單: 鏈接:https://www./courses/1/7/11 來源:??途W(wǎng) class FoldPaper { public : //遞歸調(diào)用 void fold( int i, int N,bool down,vector<string> &ret){ if (i > N) return ; fold(i + 1 ,N, true ,ret); ret.push_back(down ? "down" : "up" ); fold(i + 1 ,N, false ,ret); } vector<string> foldPaper( int n) { vector<string> ret; fold( 1 ,n, true ,ret); return ret; } }; 鏈接:https://www./courses/1/7/11 來源:??途W(wǎng) class FoldPaper { public : void func( int i, int n,string ret,vector<string> &v) { if (i > n){ return ; } func(i + 1 , n, "down" , v); ret == "down" ? v.push_back( "down" ) : v.push_back( "up" ); func(i + 1 , n, "up" , v); } vector<string> foldPaper( int n) { vector<string> v; func( 1 , n, "down" , v); return v; } }; |
|