• 1-1-折纸问题


     1 /*
     2     题目描述:
     3         请把纸条竖着放在桌子上,然后从纸条的下边向上方对折,压出折痕后再展开。此时有1条折痕,
     4         突起的方向指向纸条的背面,这条折痕叫做“下”折痕 ;突起的方向指向纸条正面的折痕叫做“上”折痕。
     5         如果每次都从下边向上方对折,对折N次。请从上到下计算出所有折痕的方向。
     6         给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".
     7         测试样例:
     8             1
     9             返回:["down"]
    10 */
    11 /*
    12     使用递归实现:
    13     折叠n次时的折痕 等于 折叠n-1次时的折痕+“down”+折叠n-1次时的折痕的逆的反
    14       n = 1时,折痕为:下;
    15     则n = 2时,折痕为:下 下 上;
    16       n = 3时,折痕为:下下上 下 下上上;
    17 */
    18 
    19 #include <iostream>
    20 #include <vector>
    21 #include <string>
    22 using namespace std;
    23 
    24 vector<string> foldPaper(int n){
    25     vector<string> fp;
    26     if (n == 1){
    27         fp.push_back("down");
    28         return fp;
    29     }
    30     vector<string> fold = foldPaper(n-1);
    31     for (int i = 0; i < fold.size(); i++)
    32         fp.push_back(fold[i]);
    33     fp.push_back("down");
    34     for (int i = fold.size()-1; i >= 0; i--){
    35         if (fold[i] == "down")
    36             fp.push_back("up");
    37         else
    38             fp.push_back("down");
    39     }
    40     return fp;
    41 }
    42 
    43 int main(){
    44     vector<string> result;
    45     result = foldPaper(4);
    46     for (int i = 0; i < result.size(); i++)
    47         cout << result[i] << endl;
    48     return 0;
    49 }
  • 相关阅读:
    【Daily Scrum】11-18:Postmortem of sprint 1
    【Daily Scrum】11-17
    【Daily Scrum】11-14
    【Daily Scrum】11-13
    【Daily Scrum】11-12
    【Daily Scrum】12-04
    【Daily Scrum】12-03
    【Review】Postmortem of Sprint 2 and next planning
    【Daily Scrum】11-28
    【Daily Scrum】11-27
  • 原文地址:https://www.cnblogs.com/qianmacao/p/4884701.html
Copyright © 2020-2023  润新知