通过java列

时间:2017-12-02 14:23:40

标签: java matrix

我有以下代码,以及对矩阵列的路径的疑问,与前一个,后一个和其他的比较。我从上到下拿第一列。我拿第一个元素并比较它们是否与下一个元素相同(下图)。列的第二个位置,比较它们是否与上面的一个和下面的一个相同,依此类推第三个。我的意思是,如果我有这个专栏:

1
2
2
2
3
2
2
2
2
1

如果您有3个或更多相同的连续数字,我必须将它们设置为0(这是我认为它会做的)。输出将是:

1
0
0
0
3
0
0
0
0
1

我需要对每一列进行操作,我有这种方法,我想以最简单的方式做到这一点,这是最直接的解决方案,没有奇怪的事情,尽管我认为它必须是递归的,我不知道。唯一能使我创建一个零的矩阵,我找不到错误。

代码:

 public static void matrix(int[][] matrix, int size, int[] color, int position) {

int repeated = 0;
for (int row  = 1; row < size; row ++) {
    for (int col = 1; col < size; col++) {
        if (matrix[row][col] == matrix[row][col++]) {
            repeated = matrix[row][col];
        }
        while (matrix[row][col] == repeated) {
            matrix[row][col] = 0;
            row++;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这是我为您的场景构建的代码。您可以在代码中找到有用的评论。

public static void main(String[] args)
{

  int matrix[][] = new int[][]{
      {1,2},
      {2,2},
      {2,2},
      {2,2},
      {3,2},
      {2,2},
      {2,2},
      {2,3},
      {2,1},
      {1,3}};
  matrix(matrix, 10, null, 0);
  System.out.println(matrix);
}

public static void matrix(int[][] matrix, int size, int[] color, int position) {
  //This value keeps track of the current value checked for repetition
  int repeated = 0;
  //The running total for repeated
  int count = 1;
  //My matrix create with 2 columns,
  for (int col  = 0; col < 2; col ++) {
    //initialized - may need length check
    repeated = matrix[0][col];
    count = 1;
    for (int row = 1; row < size; row++) {
      if (matrix[row][col] == repeated)
      {
        count++;
      }
      else
      {
        //reset the values when match fails
        count = 1;
        repeated = matrix[row][col];
      }
      if(count == 3)
      {
        //First score of 3
        matrix[row][col] = 0;
        matrix[row-1][col] = 0;
        matrix[row-2][col] = 0;
      }
      else if(count > 3)
      {//Scoring after 3
        matrix[row][col] = 0;
      }
    }
  }
}

这是输出

[[1,0],

[0,0],

[0,0],

[0,0],

[3,0],

[0,0],

[0,0],

[0,3],

[0,1],

[1,3]]