从1~10000的数字,我用了一大部分,我要找出没用到的号码中最多连续的数字。
用了的数字已经保存在数据库中了。有什么办法吗?

解决方案 »

  1.   

    一个比较笨的办法:
    根据数据中记录构造一个长度为10000的字符,如1已使用,则str[0] = 1,否则为默认的0采用对折的算法查找这个字符串是最长的连续0,用strpos函数,
      

  2.   

    一种方法是将数据取到本地来进行判断,这个方案应该比较简单。
    要用一个SQL语句的话还是比较困难。
      

  3.   

    var
      Max,Num,i:integer;
    begin
       Max:=0;
       Num:=0;
       for i:=0 to 10000 do
          begin
             if sql语句查这个号码是否存在=false then
                num=num+1 ;
             else
                num:=0; //不连续清0
             if num>max then
                max:=num;
             end;edn;
      

  4.   

    我用的是Oracle数据库测试。
    测试的Tian_A表有一个字段A number(5)类型.
    里面可以存放你使用过的数字。
    select Max(a.a-b.a) from (select rownum as RN,a from (select a from tian_a order by a)) A,(select rownum as RN,a from (select a from tian_a order by a)) B 
    where (a.RN=b.RN+1) or (a.RN=1 and B.RN is null);但本算法有一个缺陷,就是如果1这个数字没使用就可能会有问题。所以
    建议你不管用没用都在记录里插入一个0。
      

  5.   

    hawksoft(明月清风)  的算法很好,or (a.RN=1 and B.RN is null); 好像没必要