请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up"。
1.
class FoldPaper {
public:
vector<string> foldPaper(int n) {
// write code here
fold(n, true);
return vec;
}
void fold(int n, bool isDown){
if(n==0)
return;
fold(n-1, true);
if(isDown)
vec.push_back("down");
else
vec.push_back("up");
fold(n-1, false);
}
vector<string> vec;
};
2.
class FoldPaper
{
public:
vector<string> foldPaper(int n)
{
foldN(1, n, true);
return vStr;
}
void foldN(int i, int n, bool isDown)
{
if (i > n)
return;
foldN(i+1, n, true);
if (isDown)
vStr.push_back("down");
else
vStr.push_back("up");
foldN(i+1, n, false);
}
private:
vector<string> vStr;
};