先来第1个
public void static main(String args[])

byte numbers[]=new byte[50];
Random random = new Random () ;
         int count=0;
while(count<=50)
         {
    int i = random.nextInt (100) 
    if(i!=0)
              {
                 numbers[j]=(byte)i;
                 count++;
              }
}
for(int j=0;j<numbers.length;j++)
{
    if(IsLianxu(numbers,j))
System.out.println(numbers[j]+" "+numbers[j+1]+" "+numbers[j+2]+" "
 +numbers[j+3]+" "+numbers[j+4]); }
    }
}
    public static boolean IsLianxu(byte[] numbers,int index)
    {
boolean isLianxu=false;
int len=numbers.length;
if(index+4>=len)
    return isLianxu;
int d1=numbers[index]-numbers[index+1];
int d2=numbers[index+1]-numbers[index+2];
int d3=numbers[index+2] - numbers[index+3];
int d4=numbers[index+3]-numbers[index+4];
if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1|d1==-1))
    isLianxu=true;
          return isLianxu;    }

解决方案 »

  1.   

    第2个关键就是判断是不是连续的函数,和上面一个差不多
    dx1=Point1.x-Point2.x;dy1=Point1.y-Point2.y;
    dx2------------------;dy2=-----------------
    -----
    -----
    -----
    dx4=------------------;dy4=---------------
      

  2.   

    在抽取50个随机数的时候设置一个连续数repeatCount
    然后保存上一个随机数和一个差值(默认为0),如果这一个随机数和上一个随机数差1且和差值相等(如果差值为0就保存差值),则repeatCount++,
    否则repeatCount清零,差值清零
    判断repeatCount==5的时候退出随机数抽取。差值作用是判断到底是增1还是减1
    再次,如果给定50个数找5个连续数,也不用步进一
    假设第一,二,三数连续,第四数不连续,则可以直接步进到第四数,从第四数开始比较随便写写,不知道对不对。
    意念匿名...
      

  3.   

    我也认为先排序 否则isLIANXU得不出正确得结果来
    我的分析://建立数组
    int[] Num=new int[50];
    //建立新数组
    int[] Total=new int[100];
    //对应位置填入 比如Total[20]=20
    Total[Num[i]]=Num[i];
    //如果有连续的5个值不为空 成立
    for(i=0;i<Total.length;i++){
    if(Total[i]!=null&&Total[i+1]!=null&&.....)   (不好意思我记不清楚基本型别数组初始化是不是null了。。)
    .......;
      

  4.   

    刚才没仔细看
    1楼的这句好像不太对?
    if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1|d1==-1))
        isLianxu=true;
    不过思路还是很好。。 谢谢
      

  5.   

    if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1||d1==-1))
    ----不会啊,我试了一下,可以的啊,
    如1,2,3,4,5,4,3,2,1,3,4,5,6,7,44,56,7,67,68,69,70,71------
    能找出来啊
      

  6.   

    1楼的有些语法错误 修改一点
    import java.util.*;
    public class Test{
    public  static void main(String args[])

    byte numbers[]=new byte[50];
    Random random = new Random () ;
             int count=0;
    while(count<50)   //1个改动
             {
        int i = random.nextInt (100); 
        if(i!=0)
                  {
        //2个改动  for(int j=0;j<50;j++){
                     numbers[j]=i;
                     count++;
                          }
                  }
    }
    for(int j=0;j<numbers.length;j++)
    {
        if(IsLianxu(numbers,j))
    System.out.println(numbers[j]+" "+numbers[j+1]+" "+numbers[j+2]+" "+numbers[j+3]+" "+numbers[j+4]);
    }
        }
        public static boolean IsLianxu(byte[] numbers,int index)
        {
    boolean isLianxu=false;
    int len=numbers.length;
    if(index+4>=len)
        return false;
    int d1=numbers[index]-numbers[index+1];
    int d2=numbers[index+1]-numbers[index+2];
    int d3=numbers[index+2] - numbers[index+3];
    int d4=numbers[index+3]-numbers[index+4];
    if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1|d1==-1))
        isLianxu=true;
              return isLianxu;
        }
    }
    成功编译  但运行没有任何结果????????????
      

  7.   

    1。我认为先排序,然后按照allenhe(一定要过二级) 的方法对数据扫描一遍
    2。“只考虑不在一行或一列的情况 也就是斜着连续的情况”
    斜着连续需不需要考虑?如果不需要的话,可以采用十字链表,先组织数据,
    然后对所有行、所有列的头指针进行扫描,看是否有长度>=5的就ok了