java 递归生成格雷码_利用递归算法生成格雷码

利用递归算法生成格雷码

#include

#include

#include

#include

std::stack<:string> result;

static int count;

void generator() {

count--;

if (count > 0) {

generator();

std::stack<:string> newResult;

int c = 0;

while(!result.empty()) {

std::string newA, newB;

newA = result.top();

result.pop();

if (!c) {

newB = newA + "0";

newResult.push(newB);

newB = newA + "1";

newResult.push(newB);

c = 1;

} else {

newB = newA + "1";

newResult.push(newB);

newB = newA + "0";

newResult.push(newB);

c = 0;

}

}

if (count % 2 == 0) {

while(!newResult.empty()) {

result.push(newResult.top());

newResult.pop();

}

} else

result = newResult;

} else {

result.push("1");

result.push("0");

}

}

int main() {

std::cin >> count;

generator();

while(!result.empty()) {

std::cout << result.top() << std::endl;

result.pop();

}

return 0;

}

e4e2c6dc3fc752419a758de64f20bc43.png


版权声明:本文为weixin_39996134原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。