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