一个二维数组,在行或列上把3个以上连续相同的值的位置找出来。

解决方案 »

  1.   

    你可以把你的数组中的元素全部放到arraylist中,不过你需要用2个arraylist,其中一个用来放横排的数据,另一个用来放竖排的数据!然后在从他们中把值都取出来!比如str[i][j]
    ArrayList al = new ArrayList();
    那么你可以这样:
    for(int i = 0;i<str.length;i++)
    {
    for(int j = 0;j<str[i].length;j++)
     {
        al.add(str[i][j]);
     }
    }接着再来一个
    for(int j = 0;j<str.length;j++)
    {
    for(int i = 0;j<str[j].length;i++)
     {
        al.add(str[i][j]);
     }
    }
      

  2.   

    然后你可以打印出两个arraylist中的值,如果有3个重复的出现,那你就可以知道他们对应的i和j的值,也就自然而然的知道他们的位置了
      

  3.   

    用下面的方法看看
    int[][] iArc = new int[m][n];
    int iRow = iArc.length;
    int iCol = iArc[0].length;
    for(int i = 0; i < iRow; i++) {
      for(int j = 0; i < iCol; j++) {
        ....
      }
    }
    int findPosition(int iNum,int iRowPos, int iColPos,int iFlag) {//iFlag = 0 行;iFlag = 1;列
      int iConter = 0;
      if(iFlag == 0) {//往右找
        for(int i = iColPos; i < iCol; i++) {
          if(iNum == iArc[iRowPos][i]) {
            //找到一个
            。
            iConter ++;
          }
        }
      } else if(iFlag == 0) {//往下找
        for(int i = iRowPos; i < iCol; i++) {
          if(iNum == iArc[i][iColPos]) {
            //找到一个
            。
            iConter ++;
          }
        }  }
      return iConter;
    }
      

  4.   

    用OnlyFor_love(你来我家,我睡沙发。我去你家,我还睡沙发。.....?)的说法
    比如str[i][j]
    ArrayList al = new ArrayList();
    那么你可以这样:
    for(int i = 0;i<str.length;i++)
    {
    for(int j = 0;j<str[i].length;j++)
     {
        al.add(str[i][j]);
     }
    }接着再来一个
    for(int j = 0;j<str.length;j++)
    {
    for(int i = 0;j<str[j].length;i++)
     {
        al.add(str[i][j]);
     }
    }
    不过每个子循环的时候就判断一次,记录下来结果,然后清空,例如
    for(int j = 0;j<str.length;j++)
    {
    for(int i = 0;j<str[j].length;i++)
     {
        al.add(str[i][j]);
     }
    //判断
    //记录结果
    //清空
    }
      

  5.   

    to: OnlyFor_love(你来我家,我睡沙发。我去你家,我还睡沙
      你的第二个循环是不是有点问题,
    这样做好像得不到你想要的结果
      

  6.   

    我写了一个,只招行中的。
    public class find3re{
    public static void main(String args[]){
    int[][] a=new int[5][7];
    for(int i=0;i<a.length;i++){
    for(int j=0;j<a[i].length;j++){
    a[i][j]=i;//初始化
    }
    }
    for(int i=0;i<a.length;i++){//找行中的数据
    int num=a[i][0];
    int count=1;
    for(int j=1;j<a[i].length;j++){
    if(a[i][j]==num){
    count++;
    if(count==3) 
                                                      System.out.println("row:"+(i+1)+"  col:"+(j-1));//把位置输出
    }
    else{
    num=a[i][j];
    count=1;
    }
    }
    }

    }
    }
      

  7.   

    初学java,不知道这样能不能行得通import java.util.*;public class ArrayPra
    {
    public void ArryPra()
    {
    }
    public void getArray(int a[][],int m,int n)
    {

    for(int i = 0;i<m;i++)
     {for(int j = 0;j<n-2;j++)
     {
       int b1 = a[i][j];
       int b2 = a[i][j+1];
       if(b1!=b2)
       {continue;}
       else
       {
        int b3 = a[i][j+2];
        if(b1==b2&&b1==b3)
        {
        System.out.println(a[i][j]+"第"+(i*n+j+1)+","+(i*n+j+2)+","+(i*n+j+3)+"位相同;");
        }
       }
    }
     System.out.println(" ");}
     
     for(int j = 0;j<n;j++)
     {for(int i = 0;i<m-2;i++)
     {
       int b1 = a[i][j];
       int b2 = a[i+1][j];
       if(b1!=b2)
       {continue;}
       else
       {
        int b3 = a[i+2][j];
        if(b1==b2&&b1==b3)
        {
        System.out.println(a[i][j]+"第"+(i*n+j+1)+","+((i+1)*n+j+1)+","+((i+2)*n+j+1)+"位相同;");
        }
       }
    }
     System.out.println(" ");}
     
     }

    public static void main(String[] args)
    {
    ArrayPra ap = new ArrayPra();
    int[][] a = new int[3][6];
    int row0[]={1,2,2,2,1,3};
    int row1[]={3,2,1,1,1,2};
    int row2[]={1,2,3,2,3,2};
    a[0]=row0;
    a[1]=row1;
    a[2]=row2;
    ap.getArray(a,3,6);
    }
    }
      

  8.   

    public class Matrix { static int ROWNUM = 5; // m
    static int COLNUM = 5; // n

    int [][] data = new int[][] {{1,2,1,3,3},
    {2,3,4,4,6},
    {4,3,3,3,2},
    {2,2,2,3,4},
    {9,2,3,4,5}};

    public void printGood(){

    int M = data.length;
    int N = data[0].length;

    int [] rowBegins = new int[N]; // == zero?
    int [] rowEnds = new int[N];

    for (int i = 0; i < N; i ++){
    rowBegins[i] = -1;
    }
    for (int j = 0; j < N; j ++){
    rowEnds[j] = -1;
    }

    for (int i = 0; i < M; i ++){

    int colBegin = -1;
    int colEnd = -1;
    for (int j = 0; j < N - 1; j ++){

    // process every row.
    if (data[i][j] == data[i][j + 1]){
    if (colBegin == -1){
    colBegin = j;
    colEnd = j + 1;
    }
    else
    {
    colEnd = j + 1;
    }
    }
    else{
    if (colBegin != -1){
    System.out.println("(" + i + ", " + colBegin + ") - (" + i + ", " + colEnd + ")");
    colBegin = colEnd = -1;
    }

    }

    // process every col.
    if (i != M -1){
    if (data[i][j] == data[i + 1][j]){
    if (rowBegins[j] == -1)
    {
    rowBegins[j] = i;

    }

    rowEnds[j] = i + 1;
    }

    else{
    if (rowBegins[j] != -1){
    System.out.println("(" + rowBegins[j] + ", " + j + ") - (" + rowEnds[j] + ", " + j + ")");
    rowBegins[j] = rowEnds[j] = -1;
    }

    }
    }
    else{

    if (rowBegins[j] != -1){
    System.out.println("(" + rowBegins[j] + ", " + j + ") - (" + rowEnds[j] + ", " + j + ")");
    rowBegins[j] = rowEnds[j] = -1;
    }

    }


    }
    if (colBegin != -1){
    System.out.println("(" + i + ", " + colBegin + ") - (" + i + ", " + colEnd + ")");
    colBegin = colEnd = -1;
    }

    }

    }




    public static void main(String[] args){

    Matrix mx = new Matrix();
    mx.printGood();

    }
    }