序号   号码
   11    128
   12    499
   13    472
   14    501
   15    379求从13期开始,前面3期(含本期)出现数字次数较少的前5个数字  序号   号码     结果
   11    128
   12    499
   13    472    03561(11期-13期,出现数字次数较少的前5个数字)
   14    501    36823(12期-14期,出现数字次数较少的前5个数字)
   15    379    68012(13期-15期,出现数字次数较少的前5个数字)

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
        strs:TStringList;
        i,j:integer;    str:string;
        Cnts:Array[0..9] of integer;
        procedure ResetCnts;
        var
            i:integer;
        begin
            for i:=0 to 9 do
                Cnts[i]:=0;
        end;    procedure ShowCntsValue;
        var
            i,j:integer;
            iTemp,iTemp2:integer;
            Pos:Array[0..9] of integer;
            str:string;
        begin
            for i:=0 to 9 do
                Pos[i]:=i;        for i:=0 to 9 do
                for j:=i+1 to 9 do
                begin
                    if Cnts[j]<Cnts[i] then
                    begin
                        iTemp:=Cnts[j];
                        Cnts[j]:=Cnts[i];
                        Cnts[i]:=iTemp;                    iTemp2:=Pos[j];
                        Pos[j]:=Pos[i];
                        Pos[i]:=iTemp2;
                    end;
                end;        str:='';
            for i:=0 to 4 do
                str:=str+IntToStr(Pos[i]);
            Memo1.Lines.Add(str);
        end;
    begin
        strs:=TStringList.Create;
        strs.Add('128');
        strs.Add('499');
        strs.Add('472');
        strs.Add('501');
        strs.Add('379');
        for i:=2 to strs.Count-1 do
        begin
            Memo1.Lines.Add(Strs.Strings[i]);
            ResetCnts;
            for j:=i downto i-2 do
            begin
                str:=strs[j];
                inc(Cnts[StrToInt(str[1])]);
                inc(Cnts[StrToInt(str[2])]);
                inc(Cnts[StrToInt(str[3])]);
            end;
            ShowCntsValue;
            Memo1.Lines.Add('------------');
        end;
        strs.Free;
    end;