C - Cats (二叉树)

Little E has n cathouses in a line. For each integer height between 1 and 20, there are sufficiently many cats with that height. He should choose n cats to place in these cathouses. Every cathouse should contain exactly one cat. However, these cats have a special habit. For every two different cats with the same height, they can’t bear to live adjacently, and they can’t bear the height of the shortest cat living in the cathouse between them is greater than or equal to theirs.

It’s too hard for Little E to find a scheme to make all the cats living in cathouses satisfied. Can you help him?

Input
The first line contains an integer n (1≤n≤105) — the number of cathouses.

Output
Output n integers in a line. For the i-th integer, output the height of the cat living in the i-th cathouse. Any scheme which can make all the cats living in cathouses satisfied is acceptable.

Examples
Input
1
Output
1
Input
3
Output
1 2 3

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct node 
{
    node *l, *r;
    int data;
};
int ans[N], k = 0;
node *creat(int x) 
{
    node *root;
    root = new node;
    root->data = x;
    if (x == 20) 
    {
        root->l = NULL;
        root->r = NULL;
    } 
    else 
    {
        root->l = creat(x + 1);
        root->r = creat(x + 1);
    }
    return root;
}
void zh(node *root) 
{
    if (k > N) return;
    if (root) 
    {
        zh(root->l);
        ans[k++] = root->data;
        zh(root->r);
    }
}
int main() 
{
    int n;
    node *root;
    root = creat(1);
    zh(root);
    cin >> n;
    for (int i = 0; i < n; i++) 
    {
        if (i == n - 1)
            cout << ans[i] << '\n';
        else
            cout << ans[i] << ' ';
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值