我想编个彩票过滤程序:
中国福彩双色球33选6共1107568种组合,比如
1,2,3,4,5,6为第1注
1,2,3,4,5,7为第2注
1,2,3,4,5,8为第3注

28,29,30,31,32,33为第1107568注
今已知某注号码中的6个号码,比如
code[1]=i 
code[2]=j 
code[3]=k 
code[4]=l 
code[5]=m 
code[6]=n
那么,号码code是1107568注号码中的第几注??
pos=i????j?????k????l????m?????n这个表达式怎么写???

解决方案 »

  1.   

    好象没有那么难?
    你搞得这样诚肯把人都吓着了吧假定code是有序的
      

  2.   

    楼主的结贴有点不地道,请看
    http://topic.csdn.net/u/20080620/10/92230368-b2f6-41ab-bbce-713ff31c49ab.html呵呵,我可不是来吵架了
      

  3.   

    各位大哥:
    谢谢回复啊!!
    我说的不是查询比较,而是直接通过对6个号码的计算得到这注号码在所有组合中的序号
    否则这样比较的话不得了:
    for k:=1 to 1000000 do
    begin
    code[1]:=*;code[2]:=*;code[3]:=*;code[4]:=*;code[5]:=*;code[6]:=*;
    for i:=1 to 1107568 do
    begin
        num:=0;
        for j:=1 to 6 do
            if code[j]=allcode[i,j] then num:=num+1;
        if num>=6 then  goto out;//如果6个号码都相同,说明找到 
    end;
    out:
    pos:=i;//保存序号
    end;
    之所以不这样写,首先要定义一个超大数组allcode(1107568个元素),另外,我要找的可不是一两次,而是100万次,这样写的话程序立马会死掉!!,所以只能直接算出来,不能找。各位还有什么高招啊,急啊!!!
      

  4.   

    各位大哥:
    谢谢回复啊!!
    我说的不是查询比较,而是直接通过对6个号码的计算得到这注号码在所有组合中的序号
    否则这样比较的话不得了:
    for k:=1 to 1000000 do
    begin
    code[1]:=*;code[2]:=*;code[3]:=*;code[4]:=*;code[5]:=*;code[6]:=*;
    for i:=1 to 1107568 do
    begin
        num:=0;
        for j:=1 to 6 do
            if code[j]=allcode[i,j] then num:=num+1;
        if num>=6 then  goto out;//如果6个号码都相同,说明找到 
    end;
    out:
    pos:=i;//保存序号
    end;
    之所以不这样写,首先要定义一个超大数组allcode(1107568个元素),另外,我要找的可不是一两次,而是100万次,这样写的话程序立马会死掉!!,所以只能直接算出来,不能找。各位还有什么高招啊,急啊!!!
      

  5.   

    http://www.delphibbs.com/delphibbs/dispq.asp?lid=3670341