//树 左节点-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; }
点赞 评论

相关推荐

04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
可以不说话:笔试a了3道半,今天说是挂了😭😭
投递汇丰科技等公司7个岗位
点赞 评论 收藏
分享
牛客网
牛客企业服务