关于足彩胜负彩的程序:  
 
14场结果:      1-3-3-0-3-0-1-1-3-3-3-1-0-3  
 
一个方案是:  130,30,3,10,31,30,31,10,30,3,3,10,30,31  
 
求代码,实现:  
 
中14场有几注?  
中13场有几注?  
中12场有几注?

解决方案 »

  1.   

    li_guang(李广) 调个给我啊?
      

  2.   

    你用的是什么数据库,我以前用的是SQL 2000,你要我调的是SQL算法语句还是怎么插入单式的语句
      

  3.   

    我用的是mysql数据库SQL算法语句还是怎么插入单式的语句都给我
      

  4.   

    String l = "130,30,3,10,31,30,31,10,30,3,3,10,30,31"
    String[] k = l.split(",");
    char[] NO1 = k[0].toCharArray();
    .......
    StringBuffer s = new StringBuffer(100);
    for(int i1=0;i1<NO1.length;i1++){
      for(int i2=0;i2<NO1.length;i2++){
    ..........
      s.append("insert into .....")
     .. 
     }
    }
    以前的文件我没有在这里,我只能提供一个样版给你,这样就可以插入了,不过我不是直接用insert into,而是用union all select 全部一次性过插入.
      
      

  5.   

    结算 SQL的存储过程declare @no1 int,@no2 int......
    select count(1) from tb where 
    sum(case when tb.no1=@no1 then 1 else 0 end
     case when tb.no2=@no2 then 1 else 0 end
    .......)=14
     --14即是你要求的所中的场数
      

  6.   

    还不明白的话,可以直接联系我:[email protected]
      

  7.   

    以下是一个三场比赛的算法,14场比赛略加修改就可以得到了import java.util.ArrayList;
    import java.util.List;public class sports {
        public static void main(String[] args) {
            String strResult[] = { "130", "30", "3" };
            String strAnswer = "133";
            int i0 = 0;
            int i1 = 0;
            int i2 = 0;
            int nEqual0 = 0;
            int nEqual1 = 0;
            int nEqual2 = 0;
            int nEqual3 = 0;
            String str = "";
            List lstParams = new ArrayList();        // change to single
            for (;;) {
                str = strResult[0].substring(i0, i0 + 1)
                        + strResult[1].substring(i1, i1 + 1)
                        + strResult[2].substring(i2, i2 + 1);
                lstParams.add(str);
                if (i2 < strResult[2].length() - 1) {
                    i2++;
                }
                if (i2 >= strResult[2].length() - 1) {
                    i1++;
                }
                if (i1 > strResult[1].length() - 1) {
                    i0++;
                    i1 = 0;
                }
                if (i0 > strResult[0].length() - 1) {
                    break;
                }
            }
            System.out.println(lstParams);        // compute the right result
            for (int i = 0; i < lstParams.size(); i++) {
                if (sports.compareTwo(lstParams.get(i), strAnswer) == 0) {
                    nEqual0++;
                } else if (sports.compareTwo(lstParams.get(i), strAnswer) == 1) {
                    nEqual1++;
                } else if (sports.compareTwo(lstParams.get(i), strAnswer) == 2) {
                    nEqual2++;
                } else if (sports.compareTwo(lstParams.get(i), strAnswer) == 3) {
                    nEqual3++;
                }
            }
            System.out.println("0 match's result is right:" + nEqual0);
            System.out.println("1 match's result is right:" + nEqual1);
            System.out.println("2 match's result is right:" + nEqual2);
            System.out.println("3 match's result is right:" + nEqual3);
        }    /* compute the right result */
        private static int compareTwo(Object obj1, String str2) {
            int count = 0;
            for (int i = 0; i < str2.length(); i++) {
                if (obj1.toString().substring(i, i + 1).equals(
                        str2.substring(i, i + 1))) {
                    count++;
                }
            }
            return count;
        }
    }
      

  8.   

    MrYou(菜鸟飞飞)能否做个14场比赛的,(或者通用的,比赛常数可以自己定)有老兄弟了
      

  9.   

    li_guang(李广),看不懂,邮件发给你了。
      

  10.   

    楼主大哥,都做到这个份上了,已经很容易改到14场了,自己改改吧ps:通用的,比赛场数可以自己定的倒不是做不出来,只是原来的String[]都要改成动态数组ArrayList,太麻烦了,需要考虑的情况和容错处理也很多,这种纯算法问题很恶心的,不想费尽了,看看谁有兴趣帮你写吧,good luck !
      

  11.   

    String l = "130,30,3,10,31,30,31,10,30,3,3,10,30,31"
    String[] k = l.split(",");
    char[] NO1 = k[0].toCharArray();
    char[] NO2 = k[1].toCharArray();
    char[] NO3 = k[2].toCharArray();
    char[] NO4 = k[3].toCharArray();
    char[] NO5 = k[4].toCharArray();
    char[] NO6 = k[5].toCharArray();
    char[] NO7 = k[6].toCharArray();
    char[] NO8 = k[7].toCharArray();
    char[] NO9 = k[8].toCharArray();
    char[] NO10 = k[9].toCharArray();
    char[] NO11 = k[10].toCharArray();
    char[] NO12 = k[11].toCharArray();
    char[] NO13 = k[12].toCharArray();
    char[] NO14 = k[13].toCharArray();
    StringBuffer s = new StringBuffer(100);for(int i1=0;i1<NO1.length;i1++){
     for(int i2=0;i2<NO2.length;i2++){
      for(int i2=0;i2<NO3.length;i3++){
       for(int i2=0;i2<NO4.length;i4++){
         for(int i2=0;i2<NO5.length;i5++){
       for(int i2=0;i2<NO6.length;i6++){
         for(int i2=0;i2<NO7.length;i7++){
       for(int i2=0;i2<NO8.length;i8++){
         for(int i2=0;i2<NO9.length;i9++){
       for(int i2=0;i2<NO10.length;i10++){
         for(int i2=0;i2<NO11.length;i11++){
       for(int i2=0;i2<NO12.length;i12++){
      for(int i2=0;i2<NO13.length;i13++){
        for(int i2=0;i2<NO14.length;i14++){
       s.append("insert into tb(no1,no2,no3,no4)...")//插入数据库,你自己插入

    }}}}}}}}}}}}}}}}//建立一个存储过程,传入结果
    create proc winResult
    @no1 int
    ,@no2 int......//14场的结果,放入SQL变量
    asupdate tb win14 = (
    select count(1) from tbSingle where //tbsingle为你放单式的数据库
    sum(case when tbSingle.no1=@no1 then 1 else 0 end
     case when tbSingle.no2=@no2 then 1 else 0 end
    .......)=14) --中14场的
    ,win13 = (select count(1) from tbSingle where 
    sum(case when tbSingle.no1=@no1 then 1 else 0 end
     case when tb.no2=@no2 then 1 else 0 end
    .......)=13) --中13场的
    ,win12 = (select count(1) from tbSingle where 
    sum(case when tbSingle.no1=@no1 then 1 else 0 end
     case when tbSingle.no2=@no2 then 1 else 0 end
    .......)=12) --中12场的