//树 左节点-6 右节点-8 #include <cstdio> #include <iostream> using namespace std; int tree[1000]; void fun(int n, int v) {     tree[2 * n] = v - 6;     tree[2 * n + 1] = v - 8;     if (tree[2 * n] > 0) fun(2 * n, v - 6);     if (tree[2 * n + 1] > 0) fun(2 * n + 1, v - 8); } int depth(int n) {     int ans = 0;     while (n != 1) {         n = n / 2;         ans++;     }     return ans; } int main() {     int n;     scanf("%d", &n);     int ans = 100000;     for (int i = 0; i < 1000; i++) tree[i] = -1;     tree[1] = n;     fun(1, n);     for (int i = 0; i < 1000; i++) {         if (tree[i] == 0) {             int tmp = depth(i);             if (tmp < ans) ans = tmp;         }     }     if (ans == 100000) ans = -1;     printf("%d\n", ans);     return 0; }
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务