编程 折纸问题

来源:互联网 发布:bigbang胜利知乎 编辑:程序博客网 时间:2024/04/29 01:37

请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展开。此时有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;};

0 0
原创粉丝点击