首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

生趣小算法,彩票生成。高分相送。

2013-06-26 
趣味小算法,彩票生成。高分相送。。。双色球大家都知道吧???从1-33红球区域有6个号,求算法生成红球的所有组合。

趣味小算法,彩票生成。高分相送。。。
双色球大家都知道吧???从1-33红球区域有6个号,求算法生成红球的所有组合。哪位高手来过招???代码越简单,效率越高越好!!!
请使用C#。。。 彩票 红球 C#
[解决办法]
这个应该很简单的吧,而且必然要穷举的。
int i1,i2,i3,i4,i5,i6;
for(a=1,a<34-5;a++)
{
  i1=a;
  for(int b=a+1;b<34-4;b++)
  {
    i2=b;
    for(int c=b+1;c<34-3;c++)
    {
      i3=c;
      for(...)
      {
        ......
        //最后一个(第六个)for循环中输出i1-i6的值并换行即可。
      }
    }
  }
}
[解决办法]
static void Main(string[] args)
        {
            int i1,i2,i3,i4,i5,i6;
            int i = 0;
            for (int a = 1; a < 34 - 5; a++)
            {
                i1 = a;
                for (int b = a + 1; b < 34 - 4; b++)
                {
                    i2 = b;
                    for (int c = b + 1; c < 34 - 3; c++)
                    {
                        i3 = c;
                        for (int d = c + 1; d < 34 - 2;d++ )
                        {
                            i4 = d;
                            for (int e = d + 1; e < 34 - 1; e++)
                            {


                                i5 = e;
                                for (int f = e + 1; f < 34; f++)
                                {
                                    i6 = f;
                                    //Console.WriteLine(......);
                                    i++;
                                }
                            }
                        }
                    }
                }
            }
            Console.WriteLine(i.ToString());
        }
最后结果是 1107568
我的机器运算用了不到半秒。
[解决办法]

引用:
static void Main(string[] args)
        {
            int i1,i2,i3,i4,i5,i6;
            int i = 0;
            for (int a = 1; a < 34 - 5; a++)
            {
                i1 = a;
                for (int b = a + 1; b < 34 - 4; b++)
                {
                    i2 = b;
                    for (int c = b + 1; c < 34 - 3; c++)
                    {


                        i3 = c;
                        for (int d = c + 1; d < 34 - 2;d++ )
                        {
                            i4 = d;
                            for (int e = d + 1; e < 34 - 1; e++)
                            {
                                i5 = e;
                                for (int f = e + 1; f < 34; f++)
                                {
                                    i6 = f;
                                    //Console.WriteLine(......);
                                    i++;
                                }
                            }
                        }
                    }
                }
            }
            Console.WriteLine(i.ToString());
        }
最后结果是 1107568
我的机器运算用了不到半秒。



你都嵌套了6个循环
生趣小算法,彩票生成。高分相送。
一般建议超过不3个的
生趣小算法,彩票生成。高分相送。
[解决办法]

using System;
using System.Collections.Generic;

namespace ConsoleApplication2


{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j, k, l, m, n;
            List<int> list = new List<int>();
            for (i = 1; i < 34; i++)
            {
                for (j = 1; j < 34; j++)
                {
                    for (k = 1; k < 34; k++)
                    {
                        for (l = 1; l < 34; l++)
                        {
                            for (m = 1; m < 34; m++)
                            {
                                for (n = 1; n < 34; n++)
                                {
                                    if (i != j && i != k && i != l && i != m && i != n && j != k && j != l && j != m && j != n && l != m && l != n && m != n)
                                    {
                                        Console.WriteLine(i.ToString() + j.ToString() + k.ToString() + l.ToString() + m.ToString() + n.ToString());
                                    }
                                }


                            }
                        }
                    }
                }
            }
            Console.ReadLine();
        }
    }
}


[解决办法]

using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j, k, l, m, n;
            int s = 0;
            DateTime dt1 = DateTime.Now;
            List<int> list = new List<int>();
            for (i = 1; i < 34; i++)
            {
                for (j = 1; j < 34; j++)
                {
                    for (k = 1; k < 34; k++)
                    {
                        for (l = 1; l < 34; l++)
                        {
                            for (m = 1; m < 34; m++)
                            {
                                for (n = 1; n < 34; n++)
                                {
                                    if (i != j && i != k && i != l && i != m && i != n && j != k && j != l && j != m && j != n && l != m && l != n && m != n)


                                    {
                                        //Console.WriteLine(i.ToString() + j.ToString() + k.ToString() + l.ToString() + m.ToString() + n.ToString());
                                        s++;
                                       
                                    }
                                }
                            }
                        }
                    }
                }
            } 
            Console.WriteLine("共有:"+s.ToString()+"组数;");
            DateTime dt2 = DateTime.Now;
            int dt = (dt2 - dt1).Seconds;
            Console.WriteLine("用时:"+dt.ToString()+"秒;");
            Console.ReadLine();
        }
    }
}


共有:882889920组数;
用时16秒;

热点排行