my approach:
1. sort the array
2. take a variable diff. intitialize it to 0.
3. take the 1st element from array nd place it in array A and 2nd element in
array B. stoe in diff sum(A)-sum(B).
4. now place the next element in array A or B according to the condition if
       if sum(A+element)-sum(B)> sum(a)-sum(B+element). store the element in
B  otherwise in A. also while storing the element in ny array maintain the
count of element in that aaray. if any time the count reaches n/2 where n is
the no. of elements in  the given aaray. then store rest element in the
other array.
5. repeat step 5 until both array A n B get n/2 elements..

hope my approach is clear and correct.
comments are welcomed.....

On 15 May 2010 08:47, Rohit Saraf <rohit.kumar.sa...@gmail.com> wrote:

> Choosing a greedy strategy for this would be difficult.
>
> For a simple dp you can
> maintain A[i,total,present] using a recurrence
>
> i is the present index of array
> total is the number of elements reqd in first partition.
> present is the no of elements already there in first partition.
>
> the array stores difference between sums. GET the minimum of all these
> and backtrack.
>
>
> On 5/15/10, Amir hossein Shahriari <amir.hossein.shahri...@gmail.com>
> wrote:
> > @karas: your solution is greedy and its wrong e.g. for {1,2,3,4,5,100}
> your
> > diff would be 95 but the best result is 91
> >
> > i think we can solve this problem by dynamic programming but not a simple
> > one! since the size of the two subsets must be equal.
> > so it's DP solution has at least 3 dimensions: tow dimensions
> representing
> > the number of elements in each subset and another for the difference
> between
> > their sums
> >
> > On Fri, May 14, 2010 at 10:11 PM, W Karas <wka...@yahoo.com> wrote:
> >
> >> On May 14, 4:51 am, divya <sweetdivya....@gmail.com> wrote:
> >> > Algorithm to partition set of numbers into two s.t. diff bw their
> >> > sum is min and they hav equal num of elements
> >>
> >> void part(const int a[], int n_a, int g1[], int g2[])
> >>  {
> >>    int i, j, k;
> >>
> >>    /* diff = sum(g1) - sum(g2) */
> >>    int diff;
> >>
> >>    sort(a, n_a);
> >>
> >>    diff = 0;
> >>    for (i = 0, j = 1, k = 0; j < n_a; ++k, i += 2, j += 2)
> >>      {
> >>        if ((a[i] > a[j]) == (diff > 0))
> >>          {
> >>            g1[k] = a[j];
> >>            g2[k] = a[i];
> >>          }
> >>        else
> >>          {
> >>            g1[k] = a[i];
> >>            g2[k] = a[j];
> >>          }
> >>        diff += g1[k] - g2[k];
> >>       }
> >>  }
> >>
> >> --
> >> 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<algogeeks%2bunsubscr...@googlegroups.com>
> <algogeeks%2bunsubscr...@googlegroups.com<algogeeks%252bunsubscr...@googlegroups.com>
> >
> >> .
> >> 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 algoge...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/algogeeks?hl=en.
> >
> >
>
>
> --
> --------------------------------------------------
> Rohit Saraf
> Second Year Undergraduate,
> Dept. of Computer Science and Engineering
> IIT Bombay
> http://www.cse.iitb.ac.in/~rohitfeb14<http://www.cse.iitb.ac.in/%7Erohitfeb14>
>
> --
> 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<algogeeks%2bunsubscr...@googlegroups.com>
> .
> 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 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