这是我写的代码 你看看吧 首先如果只执行A操作的话 能到的位置是2^n-1,每次都是到这个位置,然后我们判断这些点是不是 我们要到达的点,如果不是我们就要找到要到达的点的两端,走到最右端倒回去,倒回去的时候其实 和往前走是一样的,因为速度这时候也变成了1 int racer(int target) {     int sum = 0;     int i = 0;     for (i; i < 1000; i++)     {         if ((pow(2, i)-1) == target)             return i;         if ((pow(2, i)-1) < target && (pow(2, i + 1)-1) > target)             break;     }     sum = sum + i + 1;     int dis = pow(2, i + 1) - 1 - target;     sum = sum + racer(dis) + 1;     return sum; }
点赞 评论

相关推荐

牛客网
牛客企业服务