我有一个算法,我填充一个 10 x 10 矩阵。我希望在打印矩阵的那一刻,没有重复的数字。
这是我的代码:
int posi = 0, posj = 0, mayor = 0;//declaracion de variables para la posicion y el numero mayor
Console.WriteLine("Matriz de 10*10\n");
int[,] matriz = new int[10, 10]; //Creacion de la matriz de 10*10 (10filas, 10 columnas)
Random aleatorio = new Random();//declaracion del random para llenar la matriz
//se recorre la matriz para asignar los valores
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
{
matriz[i,j]=aleatorio.Next(0, 100);
//matriz[i, j] = aleatorio.Next(0, 100);
}
// se recorre nuevamente para leer sus valores y validar cual es mayor y capturar su respectiva posicion
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (matriz[i, j] > mayor)//si matriz en la posicion i,j es > mayor
{
mayor = matriz[i, j]; // a mayor -> el valor que hay en la posicion i, j
posi = i; // a la posicion i -> i
posj = j;// a la posicion j -> j
}
//imprimir matriz
Console.Write(matriz[i, j].ToString() + " ");
}
Console.WriteLine();
}
//impresion del numero mayor y su posicion.
Console.WriteLine("El numero mayor es:{0} y esta en la posicion {1},{2}", mayor.ToString(), posi.ToString(), posj.ToString());
Console.ReadLine();
Console.ReadLine();
}
}
}
避免重复的一种非常有效的方法是生成
HashSet
第一个(已经处理重复),然后用从那里获取的值填充您的数组。然后你可以用
Buffer.BlockCopy
它来给它一个数组的形状。最后你可以像你已经在做的那样搜索最大值
如果你要用 0 到 99 的值填充一个矩阵,你可以这样做(我在 5x5 中做过)。您只需执行循环来填充数组。
如果您知道要输入哪些值,则在您从已经拥有的列表中“获取”值时使用 if 获取最大值的索引。