在C ++中找到从N达到M的最小步骤数
假设我们有两个整数N和M。通过执行给定的运算,我们必须找到从N到M的最小步数-
将x乘以2,因此x将为2 * x
从数字x减去1,因此数字将为x – 1
如果N = 4并且M = 6,则输出将为2。因此,如果我们对N执行2号运算,则N变为3,然后对N的更新值执行1号运算,因此它变为2 * 3 = 6。因此,最小步骤数将为2。
为了解决这个问题,我们将遵循以下规则-
我们可以逆转问题,就像我们从M取数字N一样,因此新的两个操作将是
用偶数除以2,
用数字加1
现在的最小操作数为
如果N> M,则返回它们之间的差,因此步数将为M加1,直到等于N
否则,当N <M时,将M除以2,直到小于N。如果M为奇数,则先对其加1,然后除以2。一旦M小于N,则将它们之间的差加到计数以及上述操作的计数。
示例
#include<iostream>using namespace std;
int countMinimumSteps(int n, int m) {
int count = 0;
while(m > n) {
if(m % 2 == 1) {
m++;
count++;
}
m /= 2;
count++;
}
return count + n - m;
}
int main() {
int n = 4, m = 6;
cout << "Minimum number of operations required: " << countMinimumSteps(n, m);
}
输出结果
Minimum number of operations required: 2
以上是 在C ++中找到从N达到M的最小步骤数 的全部内容, 来源链接: utcz.com/z/341189.html