请把纸条竖着放在桌?上,然后从纸条的下边向上?对折,压出折痕后再展 开。此时有1条折痕,突起的?向指向纸条的背?,这条折痕叫做“下”折痕 ;突起的?向指向纸条正?的折痕叫做“上”折痕。如果每次都从下边向上? 对折,对折N次。请从上到下计算出所有折痕的?向。
给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".
1
返回:["down"]
class
FoldPaper {
public
:
//递归调用
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;
}
};
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;
}
};
联系客服