Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

แปลงตัวเลข m เป็น n ด้วยจำนวนการดำเนินการน้อยที่สุดใน C++

คำอธิบายปัญหา

ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมแปลงตัวเลข m เป็น n โดยใช้จำนวนการดำเนินการที่น้อยที่สุด

สำหรับนี้ เราจะได้รับจำนวนเต็มสองจำนวน m และ n งานของเราคือแปลงจำนวนเต็ม m เป็น n โดยใช้การดำเนินการที่อนุญาตน้อยที่สุด

การดำเนินการที่อนุญาต:

  • คูณตัวเลขที่กำหนดด้วย 2

  • ลบ 1 จากตัวเลขที่กำหนด

ตัวอย่างโค้ด

#include <bits/stdc++.h> using namespace std; //finding minimum number of operations required int convert(int m, int n){    if (m == n)       return 0;    if (m > n)    return m - n;    //can't convert in this situation    if (m <= 0 && n > 0)       return -1;    //when n is greater and n is odd    if (n % 2 == 1)    //performing '-1' on m       return 1 + convert(m, n + 1);    //when n is even    else    //performing '*2' on m       return 1 + convert(m, n / 2); } int main(){    int m = 5, n = 11;    cout << "Minimum number of operations : " << convert(m, n);    return 0; }

ผลลัพธ์

Minimum number of operations : 5