我想学习如何填充这个 10x10 矩阵但不重复数字,这是我的代码
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[11, 11]; //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);
}
// 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();
您缺少一种算法..寻找数组重复元素的算法..
但首先
是 10x10 吗?那你为什么把它定义为11X11???
假设...我们替换它...
对于这样的事情......
然后...我们调用一个控制函数
那个函数......它的作用......是遍历整个数组并返回,
true
如果它被重复并且false
不重复。那么......我们只会错过一件事......只要该函数返回
false
,我们就不会在数组中保存任何内容......如果它返回true
,我们将保存它......您可以使用 HasSet 最初随机存储 100 个数字,然后将它们转储到矩阵中,通过这种方式,您的代码通过对矩阵进行单次浏览来优化
就像是
通过这种方式,您不必执行验证功能来知道是否已经存储了一个数字,因为 HashSet 不存储重复项,稍后您将通过 HashSet 并将其存储在数组中。HashSet 是一个不允许重复的无序集合。
另一种替代解决方案可以是