Examveda

What is the value stored in max_val[5] after the following program is executed?
#include<stdio.h>
#include<limits.h>
int rod_cut(int *prices, int len)
{
      int max_val[len + 1];
      int i,j,tmp_price,tmp_idx; 
      max_val[0] = 0;
      for(i = 1; i <= len; i++)
      {
	   int tmp_max = INT_MIN; // minimum value an integer can hold
	   for(j = 1; j <= i; j++)
	   {
	         tmp_idx = i - j;
                //subtract 1 because index of prices starts from 0
	         tmp_price = prices[j-1] + max_val[tmp_idx];
	         if(tmp_price > tmp_max)
		    tmp_max = tmp_price;
	   }
	   max_val[i] = tmp_max;
     }
     return max_val[len];
}
int main()
{
      int prices[]={2, 5, 6, 9, 9, 17, 17, 18, 20, 22},len_of_rod = 5;
      int ans = rod_cut(prices, len_of_rod);
      printf("%d",ans);
      return 0;
}

A. 12

B. 27

C. 10

D. 17

Answer: Option A


Join The Discussion

Related Questions on Dynamic Programming in Data Structures