100个数字分布到数组hm[0..9,0..99]里
就是十条记录
每条记录里60个数字
要求每个数字使用6次(不能多也不能少)
100个数字是0到99
语文考试不及格
有没看懂的可以问下我

解决方案 »

  1.   

    剩下的不处理啊
    比如数字是53
    那么hm[i,53]就等于1
    不然就等于0
      

  2.   

    1. 定义变量用来保存每个数字的使用次数
    array[0..99] of integer; 
    当然也可能是array[1..100],看你的“100个数字”是0~99还是1~100,使用前初始化到全02. 定义变量用来保存每条记录内的数字计数
    array[0..9] of integer; 
    使用前初始化到全03. 定义变量来保存数字被引用的总次数用来控制循环
    integer;
    使用前初始化到04. 初始化随机数种子。
    Randomize;5. 用while do循环,条件为数字的总引用计数<6006. 在循环体内随机生成
    a. 数字(Random(100)或者Random(100)+1)
    b. 记录序号(Ramdom(10))7. 检查该数字在1中定义的引用计数,应小于6,检查记录指定位置状态,应为0,如2条件满足,则该数字引用计数+1,总引用计数+1,记录的相应位置置位为1。8. 重复循环。
      

  3.   

    var
      hm: array[0..9,0..99] of Integer;var
      i,j: Integer;
      List,List1: TList;
    begin  FillChar(hm,sizeof(hm),0);
      List := TList.Create;
      List1 := TList.Create;
      try
        for i := 0 to 999 do List1.Add(Pointer(i));    for i := 0 to 5 do
        for j := 0 to 99 do
        List.Add(Pointer(j));    while List.Count > 0 do begin
          I := random(List1.Count);
          j := random(List.Count);
          inc(hm[Integer(List1[i]) div 100,Integer(List[j])]); //计数加1(存在重复数字)
          List1.Delete(I);
          List.Delete(j);
        end;
        
      finally
        List1.Free;
        List.Free;
      end;
    end;
      

  4.   

    写错了,还不能编辑的...7楼的代码发错了^_^var
      hm: array[0..9,0..99] of Integer;var
      i,j, k: Integer;
      List: TList;
    begin  FillChar(hm,sizeof(hm),0);
      List := TList.Create;
      try    for i := 0 to 5 do
        for j := 0 to 99 do
        List.Add(Pointer(j));    for i := 0 to 9 do 
        for j := 0 to 59 do begin
        
          k := random(List.Count);
          inc(hm[i,Integer(List[k])]); //计数加1(存在重复数字)
          List.Delete(j);
        end;
        
      finally
        List.Free;
      end;
    end;以下应该是楼主所需要的代码:var
      hm: array[0..9,0..99] of Integer;var
      i,j, k,l: Integer;
      List: TList;
    begin  FillChar(hm,sizeof(hm),0);
      List := TList.Create;
      try
        for I := 0 to 100 - 1 do begin
          for J := 0 to 9 do
          List.Add(Pointer(j));
          for k := 0 to 6 - 1 do begin
            l := Random(List.Count);
            hm[Integer(List[l]), i] := 1;
            List.Delete(l);
          end;
        end;   
        
      finally
        List.Free;
      end;
    end;