>  기사  >  백엔드 개발  >  C++에서는 주어진 연산을 수행하여 숫자를 1로 줄입니다.

C++에서는 주어진 연산을 수행하여 숫자를 1로 줄입니다.

WBOY
WBOY앞으로
2023-09-04 21:41:03859검색

C++에서는 주어진 연산을 수행하여 숫자를 1로 줄입니다.

정수를 입력으로 제공합니다. 목표는 입력된 숫자를 1로 줄이는 데 필요한 최소 단계 또는 작업 수를 찾는 것입니다. 수행할 수 있는 작업은 -:

  • 숫자가 짝수이면 2로 나눕니다.

  • 숫자가 홀수이면 1씩 늘리거나 줄입니다.

Example

Input− Number = 28

Output− 28을 1로 줄이는 최소 단계: 6

Explanation

28은 짝수입니다. 2로 나누면 14입니다.

14는 짝수 - 2로 나누기 = 7

7은 홀수 - 1로 나누기 = 8

8은 짝수 - 2로 나누기 = 4

4는 짝수 - 2로 나누기 = 2

2는 짝수입니다 - 2로 나누기 = 1

입력 − 숫자 = 9

출력 − 9를 1로 줄이는 최소 단계: 4

설명 -

9는 홀수입니다 - 빼기 1 = 8

8은 짝수 - 나누기 2 = 4

4는 짝수 - 2로 나누기 = 2

2는 짝수 - 2로 나누기 = 1

다음 프로그램에서 사용된 방법은 다음과 같습니다.

2는 짝수 - 2로 나누기 = 1 h2>

이 방법에서는 숫자를 1로 줄이는 데 필요한 최소 연산을 확인하기 위해 재귀적 방법을 사용합니다. 숫자+1 또는 숫자-1(둘 중 더 작은 것)을 재귀적으로 확인하는 최소한의 방법은 단순한 2로 나누는 경우입니다.

  • 입력 숫자를 정수로 처리합니다.

  • minWays(int num) 함수는 num을 입력으로 사용하고 num을 1로 줄이는 데 필요한 최소 연산 수를 반환합니다.

  • 변수 tmp1, tmp2 및 min을 정수로 사용합니다.

  • num이 0이면 1을 반환합니다.
  • num%2==0이 짝수이면 num=num/2를 설정하세요

  • num이 홀수이면 tmp1=minWays(num-1) 및 tmp2=minWays(num+1)을 설정하세요. ).

  • min을 tmp1과 tmp2의 최소값으로 설정하세요.

  • 1분 이상 반품하세요.

  • 결국 원하는 결과를 얻을 수 있을 겁니다.

  • 메인에 결과를 인쇄하세요.

#include <iostream>
using namespace std;
int minWays(int num){
   int tmp1,tmp2,min;
   if (num == 1){
      return 0;
   }
   else if (num % 2 == 0){
      tmp1=minWays(num/2);
      return (1 + tmp1);
   }
   else{
      int tmp1=minWays(num - 1);
      int tmp2=minWays(num + 1);
      int min=tmp1<tmp2?tmp1:tmp2;
      return (1 + min);
   }
}
int main(){
   int Number = 21;
   cout <<"Minimum steps to reduce "<<Number<<" to 1: "<<minWays(Number);
   return 0;
}

Output

위 코드를 실행하면 다음과 같은 출력이 생성됩니다

Minimum steps to reduce 21 to 1: 6

위 내용은 C++에서는 주어진 연산을 수행하여 숫자를 1로 줄입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제