@ giridhar IS  correction missed increment j in outer loop: sry :-)

assuming u wanted k=13 ( max sum <=13)

start : i,j points to 1st element
        keep a track of sum between i to j

outer loop:   till j<a.length
                       sum=sum+a[j]
                        increment j
inner loop          till sum exceeds k.
                              increment i .    sum=sum-a[i]
                              keep track of max sum so far in max.
end :           max will have max sum < k.

values after each looping of outer loop:

i     j     sum    max
0    0    0        0
0    1    2        2
0    2    9        9
0    3    12      12
2    4    7        12
2    5    12      12
4    6    13      13

On 12/7/11, sourabh singh <[email protected]> wrote:
> @ giridhar IS
>
> assuming u wanted k=13 ( max sum <=13)
>
> start : i,j points to 1st element
>          keep a track of sum between i to j
>
> outer loop:   till j<a.length
>                         sum=sum+a[j]
> inner loop          till sum exceeds k.
>                                increment i .    sum=sum-a[i]
>                                keep track of max sum so far in max.
> end :           max will have max sum < k.
>
> values after each looping of outer loop:
>
> i     j     sum    max
> 0    0    0        0
> 0    1    2        2
> 0    2    9        9
> 0    3    12      12
> 2    4    7        12
> 2    5    12      12
> 4    6    13      13
>
> On 12/7/11, Chunyuan Ge <[email protected]> wrote:
>> My implementation, can anyone offer my test cases that i can verify?
>>
>> struct Deal
>> {
>>     unsigned int nStartIndex;
>>     unsigned int nEndIndex;
>>     unsigned int nSum;
>>
>>     Deal()
>>     {
>>         nStartIndex = 0;
>>         nEndIndex = 0;
>>         nSum = 0;
>>     }
>> };
>>
>> int findBestDeal( const std::vector<unsigned int>& iHotelPrices, unsigned
>> int iLotteryPrice, Deal& bestDeal)
>> {
>>     /* for loop to find a. best solution in history
>>                         b. best solution end with j-1
>>     */
>>
>>     Deal bestPotential;
>>
>>     for (unsigned int i=0; i<iHotelPrices.size(); i++)
>>     {
>>         unsigned int nTemp = bestPotential.nSum + iHotelPrices[i];
>>
>>         if ( nTemp <= iLotteryPrice)
>>         {
>>             bestPotential.nSum = nTemp;
>>             bestPotential.nEndIndex = i;
>>         }
>>         else
>>         {
>>             int nStepCount = 0;
>>             unsigned int newTemp = nTemp;
>>             do
>>             {
>>                 newTemp -=
>> iHotelPrices[bestPotential.nStartIndex+nStepCount];
>>                 nStepCount ++;
>>             }
>>             while (newTemp > iLotteryPrice);
>>
>>             // better solution
>>             bestPotential.nSum = newTemp;
>>             bestPotential.nEndIndex = i;
>>             bestPotential.nStartIndex += nStepCount;
>>         }
>>
>>         if (bestPotential.nSum > bestDeal.nSum)
>>         {
>>             bestDeal = bestPotential;
>>         }
>>     }
>>
>>     return 0;
>> }
>>
>>
>>
>> On Wed, Dec 7, 2011 at 4:58 AM, GIRIDHAR IS <[email protected]> wrote:
>>
>>> @sourabh
>>>
>>> can you explain me how it will work for this example????
>>> a[]={2,7,3,4,5,8,10}
>>>
>>>
>>> On Dec 7, 12:17 am, sourabh singh <[email protected]> wrote:
>>> > @ sourabh :-) yep, got your point... it wont work for all cases.
>>> > but
>>> > if we set initial max to a negative value . say max possible 64 bit
>>> > -ve number.then ?
>>> > point is though the code has limitations it will work fine mostly.
>>> >
>>> > On 12/5/11, sourabh <[email protected]> wrote:
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > > @sourabh singh..
>>> >
>>> > > Hey u don't need an example... I see a check "sum > max" in ur code
>>> > > to
>>> > > calculate the max value, ryt ? Now ur initial value of max is set to
>>> > > 1. That means ur always assuming that the value whose closest is to
>>> > > be
>>> > > found is >= 1 , which is incorrect. What do you think ?
>>> >
>>> > > On Dec 6, 12:24 am, sourabh singh <[email protected]> wrote:
>>> > >> @ sourabh tried some cases its working on -ve as well. pls post
>>> > >> some
>>> > >> case in which it might not work.
>>> >
>>> > >> On 12/5/11, sourabh <[email protected]> wrote:
>>> >
>>> > >> > @sourabh..
>>> >
>>> > >> > I don't think it will work for all the cases.. did u consider
>>> negative
>>> > >> > integers as well... what i can understand from the above code is
>>> that
>>> > >> > u have taken 2 pointers of which one points to the beginning of
>>> > >> > the
>>> > >> > subarray and other one at the end of the subarray and u r
>>> > >> > shifting
>>> the
>>> > >> > pointers based on the closest value.. this app is fine for non-
>>> > >> > negative integers but will fail when the given input contains
>>> > >> > both
>>> neg
>>> > >> > and pos integers...
>>> >
>>> > >> > On Dec 5, 4:25 pm, sourabh singh <[email protected]>
>>> > >> > wrote:
>>> > >> >> @ mohit my first post on here. this solution got ac  in spoj
>>> >
>>> > >> >> main()
>>> > >> >> {
>>> > >> >>            unsigned int n,m,sum,max,i,j;
>>> > >> >>                 sum=0;max=1;
>>> > >> >>                 n=in.ReadNextUInt();
>>> > >> >>                 m=in.ReadNextUInt();
>>> > >> >>                 unsigned int *a = new unsigned int[n];
>>> > >> >>                     unsigned int *p = a;
>>> > >> >>                 for (i=0; i < n; i++)
>>> > >> >>                             *(p++) = in.ReadNextUInt();
>>> > >> >>                     i=0;
>>> > >> >>                 j=0;
>>> > >> >>                 while(j<n)
>>> > >> >>                 {
>>> > >> >>                          sum+=a[j++];
>>> > >> >>                          while(sum>m)
>>> > >> >>                          {
>>> > >> >>                                      sum-=a[i++];
>>> > >> >>                          }
>>> > >> >>                          if(sum>max)
>>> > >> >>                                     max=sum;
>>> > >> >>                 }
>>> > >> >>                 out.WriteUInt(max,'\n');
>>> >
>>> > >> >>        out.Flush();
>>> > >> >>        return 0;
>>> >
>>> > >> >> }
>>> >
>>> > >> >> On 11/28/11, Mohit kumar lal <[email protected]> wrote:
>>> >
>>> > >> >> > Given a array of positive integers ,You have to find the
>>> > >> >> > largest
>>> sum
>>> > >> >> > possible from consecutive sub-array but sum should be less
>>> > >> >> > than
>>> or
>>> > >> >> > equal
>>> > >> >> > to
>>> > >> >> > K and also find that sub-array. Ex- array={2,1,3,4,5} k=12,
>>> > >> >> >  ans->12, sub-array={3,4,5}
>>> >
>>> > >> >> > Firstly i tried with brute-force and then i also tried to
>>> > >> >> > solve
>>> it by
>>> > >> >> > DP
>>> > >> >> > but complexity were same ( O(n^2)) ....so plz try to provide a
>>> > >> >> > solution
>>> > >> >> > for
>>> > >> >> > O(nlgn) or O(n).
>>> >
>>> > >> >> > --
>>> > >> >> > Mohit kumar lal
>>> >
>>> > >> >> > IIIT ALLAHABAD
>>> >
>>> > >> >> > --
>>> > >> >> > You received this message because you are subscribed to the
>>> Google
>>> > >> >> > Groups
>>> > >> >> > "Algorithm Geeks" group.
>>> > >> >> > To post to this group, send email to
>>> > >> >> > [email protected].
>>> > >> >> > To unsubscribe from this group, send email to
>>> > >> >> > [email protected].
>>> > >> >> > For more options, visit this group at
>>> > >> >> >http://groups.google.com/group/algogeeks?hl=en.
>>> >
>>> > >> > --
>>> > >> > You received this message because you are subscribed to the
>>> > >> > Google
>>> > >> > Groups
>>> > >> > "Algorithm Geeks" group.
>>> > >> > To post to this group, send email to [email protected].
>>> > >> > To unsubscribe from this group, send email to
>>> > >> > [email protected].
>>> > >> > For more options, visit this group at
>>> > >> >http://groups.google.com/group/algogeeks?hl=en.
>>> >
>>> > > --
>>> > > You received this message because you are subscribed to the Google
>>> Groups
>>> > > "Algorithm Geeks" group.
>>> > > To post to this group, send email to [email protected].
>>> > > To unsubscribe from this group, send email to
>>> > > [email protected].
>>> > > For more options, visit this group at
>>> > >http://groups.google.com/group/algogeeks?hl=en.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>>
>

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

Reply via email to