정수를 입력으로 제공합니다. 목표는 입력된 숫자를 1로 줄이는 데 필요한 최소 단계 또는 작업 수를 찾는 것입니다. 수행할 수 있는 작업은 -:
숫자가 짝수이면 2로 나눕니다.
숫자가 홀수이면 1씩 늘리거나 줄입니다.
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%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; }
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
Minimum steps to reduce 21 to 1: 6
위 내용은 C++에서는 주어진 연산을 수행하여 숫자를 1로 줄입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!