//with memoization
int getMinSteps(int n)
{
	if(n==1) return 0;
	if(memoarray[n]!=-1) return memoarray[n];
	int r = 1 + getMinSteps(n-1);
	if(n%2==0) r = min(r,1+getMinSteps(n/2));
	if(n%3==0) r = min(r,1+getMinSteps(n/3));
	memoarray[n]=r;
	return r;
}
int main() {
	int i = 5;
	
	//std::cin >> n;
	initializeArray();
	std::cout << getMinSteps(10);
	
	return 0;
}
Example #3
0
int main()
{
	int tstcases, n, i;
	scanf("%d",&tstcases);
	getMinSteps();
	while(tstcases--)
	{
		scanf("%d",&n);
		printf("\nanswer %d",dp[n]);
	}
	printf("\n");
	return 0;
}
int getMinSteps(int n) {

	if (n == 1) {
		return 0;
	}
	
	if (memo[n] != -1) {
		return memo[n];
	}
	
	int optimalSol = 1 + getMinSteps(n - 1);
	
	if (n % 2 == 0) {
		optimalSol = min(optimalSol, 1 + getMinSteps(n / 2));
	}
	
	if (n % 3 == 0) {
		optimalSol = min(optimalSol, 1 + getMinSteps(n / 3));
	}
	
	memo[n] = optimalSol;
	return optimalSol;
}
int main()
{
	int tstcases, n, i;
	for(i=0; i<1000000; i++)
		memoarray[i]=-1;
	scanf("%d",&tstcases);
	while(tstcases--)
	{
		scanf("%d",&n);
		printf("\nanswer %d",getMinSteps(n));
	}
	printf("\n");
	return 0;
}
Example #6
0
int main(void) {
	int n;
	n=scan_d();
	printf("%d",getMinSteps(n));
	return 0;
}