首先来考虑一个可能价值500万的方法。

先描述下算法的思想:

现在有一年中开双色球的数据,写出一个算法的思想,就是分析下一期出的数的概率最大的。

  • 数据格式:前六位选号:1–33
  • 后一位选号:1–16
  • 总共一次选七位数

 {依据思想: 一:根据一年中出现的次数,得出出现次数最多和最少的,  二:在最近几次中出现频率最密的走势更高,下次出现的概率更高, 还有很多的更科学的算法思想,我一时想不起来,请大家有想法的可以在这里发表,本人会散分的……………. }


import java.awt.*;
import java.awt.event.*;

class test2 extends Thread implements KeyListener       /* 用线程控制速度,然后是监听键盘 */
{
    Frame   f   = new Frame();                  /* 定义一个窗口 */
    Panel   p1  = new Panel();                  /* 定义两个面板,一个用来添加记分,记难度等级 */
    Panel   p2  = new Panel();                  /* 这个用来添加按钮,蛇的每一节其实都是按钮 */
    Label   l0  = new Label( "难度:" );           /* 定义四个标签 */
    Label   l1  = new Label( "1" );             /* 难度等级开始时默认是一级 */
    Label   l2  = new Label( "分数:" );
    Label   l3  = new Label( "0" );             /* 分数开始时是0 */
    String  flag    = "right";                      /* 初始化的方向是向右 */
    Button  b[][]   = new Button[30][30];           /* 定义30×30个按钮,准备添加到P2上 */
    Button  c[] = new Button[90000];            /* 记录蛇身的数组 */
    int t1  = 15; int t2 = 8;               /* 第一次运行时所在行为15,初始化蛇时头所在的列为8。 */
    int x   = 0;                            /* 定义贪食蛇长 */
    int y   = 0;                            /* 定义尾巴变量 */
    int m, n;                                   /* 转弯时用于参考蛇头位置 */
    int total;                                  /* 总分 */
    int speed = 300;                            /* 速度 */
    public void run()
    {
        f.setTitle( "贪食蛇" );
        f.setBounds( 300, 100, 400, 400 );
        f.setLayout( new BorderLayout() );
        p1.setLayout( new FlowLayout() );
        p1.setBackground( Color.getHSBColor( 50, 50, 50 ) );
        p1.add( l0 );
        p1.add( l1 );
        p1.add( l2 );
        p1.add( l3 );
        f.add( p1, BorderLayout.NORTH );
        p2.setLayout( new GridLayout( 30, 30 ) );
        f.add( p2, BorderLayout.CENTER );
        f.addWindowListener( new WindowAdapter() /* 添加关闭监听 */
                     {
                         public void windowClosing( WindowEvent e )
                         {
                             System.exit( 0 );
                         }
                     } );
        f.addKeyListener( this );
        for ( int i = 0; i <= 29; i++ )                 /* 定义30×30个面板 */
            for ( int j = 0; j <= 29; j++ )
            {
                b[i][j] = new Button();
                p2.add( b[i][j] );
                b[i][j].setVisible( false );    /* 首先隐藏所有按钮 */
            }
        f.setVisible( true );
        for ( int i = 0; i <= t2; i++ )                 /* 初始化蛇 */
        {
            b[t1][i].setVisible( true );
            b[t1][i].setBackground( Color.gray );   /* 可见部分就是蛇身 */
            c[x] = b[t1][i];                        /* 因为初始化是向右运动,所以最后一个按钮为蛇头 */
            x++;                                    /* x是用来记录蛇尾数组的,蛇移动时,蛇头增加一个,同时蛇尾减少一个 */
        }
        food();                                         /* 预先产生一个食物 */
        while ( true )                                  /* 死循环 */
        {
            turn( flag );
        }
    } /* end run */


    void turn( String s )
    {
        if ( s.equals( "right" ) )
            for ( int i = t2 + 1; i <= 29; i++ )
            {
                if ( flag.equals( "up" ) )                      /* 如果方向改变则跳出循环 */
                    return;
                if ( flag.equals( "down" ) )                    /* 此时方向向右,只可向下或者向上改变 */
                    return;
                if ( b[t1][i].getBackground() == Color.blue )   /* 如果前面是食物 */
                {
                    b[t1][i].setBackground( Color.gray );
                    c[x] = b[t1][i];                        /* 如果遇到吃的就讲其设为蛇头就行,不用删尾 */
                    x++;                                    /* 从而达到加长蛇身的目的 */
                    t2 = i;
                    total++;
                    if ( total == 5 )
                    {
                        l1.setText( "2" );
                        speed = 200;
                    }
                    if ( total == 10 )
                    {
                        l1.setText( "3" );
                        speed = 100;
                    }
                    if ( total == 15 )
                    {
                        l1.setText( "风速" );
                        speed = 50;
                    }
                    if ( total == 20 )
                    {
                        l1.setText( "疯了" );
                        speed = 25;
                    }
                    l3.setText( String.valueOf( total ) );
                    food(); /* 吃掉食物以后又重新产生一个食物 */
                }else  {
                    b[t1][i].setVisible( true );
                    b[t1][i].setBackground( Color.gray );
                    t2  = i;
                    c[x]    = b[t1][i];
                    x++;
                    c[y].setBackground( Color.red );
                    c[y].setVisible( false );
                    y++;
                }
                try{
                    Thread.sleep( speed );
                }catch ( InterruptedException e ) {}
            }
        if ( s.equals( "up" ) )
            for ( m = t1 - 1; m >= 0; m-- )
            {
                if ( flag.equals( "left" ) )    /* 如果方向改变则跳出循环 */
                    return;
                if ( flag.equals( "right" ) )   /* 此时方向上,只可向左右改变方向 */
                    return;
                if ( b[m][t2].getBackground() == Color.blue )
                {
                    b[m][t2].setBackground( Color.gray );
                    c[x] = b[m][t2];        /* 如果遇到吃的就讲其设为蛇头就行,不用删尾 */
                    x++;
                    total++;
                    if ( total == 5 )
                    {
                        l1.setText( "2" );
                        speed = 200;
                    }
                    if ( total == 10 )
                    {
                        l1.setText( "3" );
                        speed = 100;
                    }
                    if ( total == 15 )
                    {
                        l1.setText( "风速" );
                        speed = 50;
                    }
                    if ( total == 20 )
                    {
                        l1.setText( "疯了" );
                        speed = 25;
                    }
                    l3.setText( String.valueOf( total ) );
                    food(); /* 从而达到加长蛇身的目的; */
                }else  {
                    b[m][t2].setVisible( true );
                    b[m][t2].setBackground( Color.gray );
                    t1  = m;
                    c[x]    = b[m][t2];
                    x++;
                    c[y].setVisible( false );
                    c[y].setBackground( Color.red );
                    y++;
                }
                try
                { Thread.sleep( speed ); }catch ( InterruptedException e ) {}
            }
        if ( s.equals( "down" ) )
            for ( m = t1 + 1; m <= 29; m++ )
            {
                if ( flag.equals( "left" ) )    /* 如果方向改变则跳出循环 */
                    return;
                if ( flag.equals( "right" ) )   /* 此时方向上,只可向左右改变方向 */
                    return;
                if ( b[m][t2].getBackground() == Color.blue )
                {
                    b[m][t2].setBackground( Color.gray );
                    c[x] = b[m][t2];        /* 如果遇到吃的就讲其设为蛇头就行,不用删尾 */
                    x++;
                    total++;
                    if ( total == 5 )
                    {
                        l1.setText( "2" );
                        speed = 200;
                    }
                    if ( total == 10 )
                    {
                        l1.setText( "3" );
                        speed = 100;
                    }
                    if ( total == 15 )
                    {
                        l1.setText( "风速" );
                        speed = 50;
                    }
                    if ( total == 20 )
                    {
                        l1.setText( "疯了" );
                        speed = 25;
                    }
                    l3.setText( String.valueOf( total ) ); /* 从而达到加长蛇身的目的 */
                    food();
                }else  {
                    b[m][t2].setVisible( true );
                    b[m][t2].setBackground( Color.gray );
                    t1  = m;
                    c[x]    = b[m][t2];
                    x++;
                    c[y].setBackground( Color.red );
                    c[y].setVisible( false );
                    y++;
                }
                try
                { Thread.sleep( speed ); }catch ( InterruptedException e ) {}
            }
        if ( s.equals( "left" ) )
            for ( n = t2 - 1; n >= 0; n-- )
            {
                if ( flag.equals( "up" ) )      /* 如果方向改变则跳出循环 */
                    return;
                if ( flag.equals( "down" ) )    /* 此时方向上,只可向左右改变方向 */
                    return;
                if ( b[t1][n].getBackground() == Color.blue )
                {
                    b[t1][n].setBackground( Color.gray );
                    c[x] = b[t1][n];        /* 如果遇到吃的就讲其设为蛇头就行,不用删尾 */
                    x++;                    /* 从而达到加长蛇身的目的 */
                    t2 = n;
                    total++;
                    if ( total == 5 )
                    {
                        l1.setText( "2" );
                        speed = 200;
                    }
                    if ( total == 10 )
                    {
                        l1.setText( "3" );
                        speed = 100;
                    }
                    if ( total == 15 )
                    {
                        l1.setText( "风速" );
                        speed = 50;
                    }
                    if ( total == 20 )
                    {
                        l1.setText( "疯了" );
                        speed = 25;
                    }
                    l3.setText( String.valueOf( total ) );
                    food();
                }else  {
                    b[t1][n].setVisible( true );
                    b[t1][n].setBackground( Color.gray );
                    t2  = n;
                    c[x]    = b[t1][n];
                    x++;
                    c[y].setBackground( Color.red );
                    c[y].setVisible( false );
                    y++;
                }
                try
                { Thread.sleep( speed ); }catch ( InterruptedException e ) {}
            }
    } /* end turn */


    void food()
    {
        int i   = (int) (Math.random() * 29);
        int j   = (int) (Math.random() * 29);
        b[i][j].setVisible( true );
        b[i][j].setBackground( Color.blue );
    }


    public void keyPressed( KeyEvent e )
    {
        if ( e.getKeyCode() == KeyEvent.VK_UP )
        {
            flag = "up";
        }
        if ( e.getKeyCode() == KeyEvent.VK_DOWN )
        {
            flag = "down";
        }
        if ( e.getKeyCode() == KeyEvent.VK_LEFT )
        {
            flag = "left";
        }
        if ( e.getKeyCode() == KeyEvent.VK_RIGHT )
        {
            flag = "right";
        }
    }


    public void keyTyped( KeyEvent e )
    {
    }


    public void keyReleased( KeyEvent e )
    {
    }
}  /* end class */
class test
{
    public static void main( String args[] )
    {
        test2 one = new test2();
        one.start();
    }
}