All pastes #770791 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-11-12 16:19 UTC
rendered paste body
HELLO ! i have question.

having next things:

3:28
2:42
3:16
4:02

then i should somehow make a value of 10:46 of them, but i can only use one number for one time.
So no 2:42+2:42..
but this:
3:28+3:16+4:02=10:46

I dont understand algortihm for this, could anyone explain ? or how bruteforce way =\?

-----------------Unfinished example #1------------------------
        public static string FunctionAlgorithm(string number) {
            bool split = false;            
            string output = "";            
            List<int> numbers = new List<int>();
            if ((split = number.Contains(":")))
            {
                string[] n = number.Split(new char[] { ':' });
                for (int i = 0; i < n.Length; i++)
                    numbers.Add(Int32.Parse(n[i]));
            }
            else {
                try
                {
                    numbers.Add(Int32.Parse(number));
                }
                catch { return "error"; }
            }
            
            int random_num = 0;
            int wantednumber = (numbers.Count > 1) ? numbers[1] : numbers[0];
            int current = 0;
            List<int> n1 = new List<int>();
            List<string> finals = new List<string>();
            while( current <= wantednumber ) {
                random_num = (new Random(new Random(new Random().Next()).Next())).Next(1, wantednumber + 1);
                if (random_num + current <= wantednumber && random_num != 0)
                {
                    //n1.Add(current);
                    n1.Add(random_num);
                    current += random_num;
                    Console.WriteLine(current+"+"+random_num);
                }
                if (current >= wantednumber)
                    break;
            } if (split)
            {
                wantednumber = numbers[0];
                current = 0;
                bool b = false;
                while (current <= wantednumber)
                {
                    random_num = (new Random(new Random(new Random().Next()).Next())).Next(1, wantednumber + 1);
                    if (random_num + current <= wantednumber && random_num != 0)
                    {
                        for (int i = 0; i < n1.Count; i++)
                        {
                            if (!finals.Contains((random_num + current) + ":" + n1[i]))
                            {                                
                                finals.Add((random_num + current) + ":" + n1[i]);
                                Console.WriteLine(current + "+" + random_num + " = " + (random_num + current) + ":" + n1[i]);
                                current += random_num;
                                b = true;
                                break;
                            }
                            if (b) { b = false; break; }
                        }
                    }                    
                }
            }
            else
            {
                for(int i = 0; i < n1.Count; i++)
                    finals.Add(n1[i].ToString());
            }
            for (int i = 0; i < finals.Count; i++)
            {
                if (i < finals.Count - 1)
                    output += finals[i] + " + ";
                else
                    output += finals[i] + " = " + number;
            }
            return output;            
        }