📌  相关文章
📜  使用给定的减法运算最小化移动以使 X 和 Y 相等

📅  最后修改于: 2022-05-13 01:56:10.140000             🧑  作者: Mango

使用给定的减法运算最小化移动以使 X 和 Y 相等

给定两个正整数XY ,任务是找到使 X 和 y 相等的最小操作数,其中在一次操作中,我们可以选择任何正整数Z并执行以下过程。

  • 如果数字Z 是偶数则从 X 中减去 Z。
  • 如果数字Z 是奇数则将 Z 添加到 X

例子:

方法:这个问题可以用 基于以下观察的贪心方法

请按照以下步骤解决此问题:

  • 找出XY之间的关系。
  • 现在根据上述观察,根据关系找出需要多少移动。

以下是上述方法的实现:

C++
// C++ code to implement the above approach
  
#include 
using namespace std;
  
// Function to find the minimum number
// of moves required
int minMoves(int X, int Y)
{
    // Checking if both 'X' and 'Y'
    // are same or not.
    if (X == Y) {
        return 0;
    }
  
    // Checking if we can make X and Y equal
    // if we select Z = X - Y
    else if (X > Y && (X - Y) % 2 == 0) {
        return 1;
    }
  
    // Checking if we can make X and Y equal
    // if we select Z = Y - X
    else if (X < Y && (Y - X) % 2 == 1) {
        return 1;
    }
    else {
        return 2;
    }
}
  
// Driver Code
int main()
{
    int X = 4, Y = 7;
  
    // Function call
    cout << minMoves(X, Y);
    return 0;
}


输出
1

时间复杂度: O(1)
辅助空间: O(1)