走出迷阵-白与黑

【问题描述】

  已知迷阵只有一个入口,师徒在整点出发,即最初节点全部为黑色。假设每个节点均会延伸出两条支路,节点为黑色时,向左前进;节点为白色时,向右前进,直到出口处结束。当节点处有人经过,节点颜色由黑变白或者由白变黑。迷阵共有n层,所有出口位置均处于第n层,所有节点从上到下从左到右的编号为1,2,4..... ..(2^D-1)若分五次出发,请给出每个人的出口位置的节点编号。(D表示迷阵的最大层数)

输入: 一个整数n,表示迷阵的层次数(1<=n<=10)。

输出: 5个整数,分别表示每个人的出口位置。

【样例输入】 4

【样例输出】 8 12 10 14 9

复制代码
#include<iostream>
using namespace std;

int main(){
    int n; // 洞穴的层次。
    int node; // 起始节点的编号。
    int tree[1025]={}; // 定义数组并初始化为0表示节点颜色都为黑(0:黑;1: 白)。 
    cin>>n;
    // 5个人出洞穴的情况模拟。 
    for(int i=1; i<=5; i++){
        node=1;
        for(int j=1; j<n; j++){
            if(tree[node]==0){ // 节点为黑,则向左走(遍历左子树),该节点变白。 
                tree[node]=1;
                node=2*node; // 左子树的节点编号等于父节点的2倍。 
            }else{ // 如果节点为白色,则向右走(遍历右子树),该节点变黑。 
                tree[node]=0;
                node=2*node+1; // 左子树的节点编号等于父节点的2倍加1。 
            } 
        }
        // 输出叶子节点。
        cout<<node<<" ";  
    } 
    return 0;
} 
复制代码

 

posted @   Hi,小董先生  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示