В приведенном ниже коде я хочу реализовать алгоритм Флойда, пользователь вводит несколько чисел в текстовое поле, и на выходе должны быть кратчайшие расстояния, которые могут пройти от узла i до узла j.но когда я набираю, например, 4 числа, это дает пробегошибка времени: вне диапазона в строке, которую я прокомментировал ниже, и я отладил ее, я понял, что k, я просто принимаю 1 значение и не принимаю другие значения, меньшие, чем n + 1, но j может принимать все значения меньше, чем n +1, что я могу решить эту проблему? Большое спасибо
отредактировано: спасибо за ваши ответы, я исправил это
private void button10_Click(object sender, EventArgs e)
{
string ab = textBox11.Text;
int matrixDimention = Convert.ToInt32(ab);
int[,] intValues = new int[matrixDimention, matrixDimention];
string[] splitValues = textBox9.Text.Split(',');
for (int i = 0; i < splitValues.Length; i++)
intValues[i / (matrixDimention), i % (matrixDimention)] = Convert.ToInt32(splitValues[i]);
string displayString = "";
for (int inner = 0; inner < intValues.GetLength(0); inner++)
{
for (int outer = 0; outer < intValues.GetLength(0); outer++)
displayString += String.Format("{0}\t", intValues[inner, outer]);
displayString += Environment.NewLine;
}
int n=matrixDimension
MessageBox.Show("matrix"+strn+ "in" + strn + "is\n\n\n" +displayString);
////before this line i wrote the codes to get the numbers that user enter in textbox and put it in an 2d array
for (int k = 0; k < n; k++)/// k just take 1 in debugging!!!
for (int i = 0; i < n; i++)///i just take 1 in debugging!!!
for (int j = 0; j < n; j++)///j took the values true
/*i took that error on this line */ if (intValues[i, j] > intValues[i, k] + intValues[k, j])
{
intValues[i, j] = intValues[i, k] + intValues[k, j];
string str_intvalues = intValues[i, j].ToString();
MessageBox.Show("Shortest Path from i to j is: " + str_intvalues);
}
else
{
string str_intvalues = intValues[i, j].ToString();
MessageBox.Show("Shortest Path from i to j is: " + str_intvalues);
}
}