Here is an O(n) approach without any advanced data structures.

dp[i] = max{dp[j] : m[i]-m[j] >= n} + a[i]

With the increasing of i, the optimal value in the brace will
not be descending. We can keep the optimal value so far and check if
there is a larger one.

#include <iostream>
using namespace std;

int profit(int m[], int p[], int n)
{
    int i,j,dp[7] = {0},k,mx = 0;
    for(j = 0, i=0;i<7;i++)
    {
        for (; j < i && m[i]-m[j] >= n; j++)
            if (dp[j] > mx)
                mx = dp[j];
        dp[i] = mx+p[i];
    }
    for(i=0;i<7;i++)
         cout<<dp[i]<<endl;
    for(i=0;i<7;i++)
         if(mx<dp[i])
                mx = dp[i];
    return mx;
}

int main()
{
    int m[7] = {1,3,5,8,9,12,15};
    int p[7] = {5,9,1,6,2,8,3};
    cout<<"\nThe maximun profit is : "<<profit(m,p,5);  //
}


On Jan 5, 3:06 am, Decipher <ankurseth...@gmail.com> wrote:
> Yuckdonald's is considering opening a series of restaurants along
> Quaint Valley Highway (QVH).The n possible locations are along a
> straight line, and the distances of these locations from the start of
> QVH are, in miles and in increasing order,m1;m2; : : : ;mn. The
> constraints are as follows:
>  1)At each location,Yuckdonald's may open at most one restaurant.The
> expected profi t from opening a restaurant at location i is pi, where
> pi > 0 and i = 1; 2; : : : ; n.
> 2)Any two restaurants should be at least k miles apart, where k is a
> positive integer.
> Give an effi cient algorithm to compute the maximum expected total
> pro fit subject to the given
> constraints.

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to