这个我是用递归a的,代码如下: string s1 = "down"; string s2 = "up"; void solve(int pre, int k, int cnt, int &n, vector<string> &ans) { if (cnt >= n + 1) return; ans[(k + pre) / 2] = s1; ans[(k - pre + 1) / 2 + k] = s2; solve(pre, (k + pre) / 2, cnt + 1, n, ans); solve(k, (k - pre + 1) / 2 + k, cnt + 1, n, ans); return; } vector<string> problem(int n) { // write code here int num = 1; for (int i = 0; i < n; ++i) num *= 2; num--; vector<string> ans(num); ans[num / 2] = s1; solve(0, num / 2, 2, n, ans); return ans; }