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;
}
解决一个有趣的问题:如何将不同高度的猫咪排列进猫屋,确保相同高度的猫咪不会相邻且中间的猫咪不能比它们更高。通过构建特殊的二叉树并遍历来生成满足条件的猫咪高度序列。
1842

被折叠的 条评论
为什么被折叠?



