Ошибка: "Индекс за пределами диапазона" - C# (178307)

Узнай цену своей работы

Формулировка задачи:

Пишу программу по алгоритму Куна(максимального паросочетания) и на строке adj[i].GetLowerBound(j); выводит ощибку: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Помогите разобраться Могу представить код
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. namespace _21_февраля
  10. {
  11. public partial class Form1 : Form
  12. {
  13. int N, M, mtSize=0, m=0;
  14. List<bool> used = new List<bool>();
  15. List<int> mt = new List<int>();
  16. List<Array> adj = new List<Array>();
  17. public Form1()
  18. {
  19. InitializeComponent();
  20. }
  21. private void Form1_Load(object sender, EventArgs e)
  22. {
  23. }
  24. private bool kuhn(int v)
  25. {
  26. if (used[v])
  27. {
  28. return false;
  29. }
  30. used[v] = true;
  31. int[,] A;
  32. int L = adj[v].GetLength(v);
  33. A = new int[L, L];
  34. for (int i = 0; i < adj[v].GetLength(v); ++i)
  35. {
  36. int w = A[v,i];
  37. if (mt[w] == -1 || kuhn(mt[w]))
  38. {
  39. mt[w] = v;
  40. return true;
  41. }
  42. }
  43. return false;
  44. }
  45. private void button1_Click(object sender, EventArgs e)
  46. {
  47. textBox1.Text = " Максимальное количество пар:\r\n";
  48. // textBox1.Text += mtSize+"\r\n";
  49. double[,] A;
  50. A = new double[N, M];
  51. for (int i = 0; i < N; i++)
  52. {
  53. for (int j = 0; j < M; j++)
  54. {
  55. try
  56. {
  57. A[i, j] = Convert.ToDouble(dataGridView1[i, j].Value);
  58. if(A[i,j]==1) m++;
  59. adj[i].GetLowerBound(j);
  60. used.Add(false);
  61. mt.Add(-1);
  62. }
  63. catch
  64. {
  65. MessageBox.Show("Исправьте значения","Ошибка");
  66. return;
  67. }
  68. }
  69. }
  70. textBox1.Text += m+"()\r\n";
  71. }
  72. private void numericUpDown1_ValueChanged(object sender, EventArgs e)
  73. {
  74. N = (int)numericUpDown1.Value;
  75. dataGridView1.RowCount = N;
  76. }
  77. private void numericUpDown2_ValueChanged(object sender, EventArgs e)
  78. {
  79. M = (int)numericUpDown2.Value;
  80. dataGridView1.ColumnCount = M;
  81. }
  82. private void solve()
  83. {
  84. for (int v = 0; v <N; ++v)
  85. {
  86. used.Add(false);
  87. if (kuhn(v))
  88. {
  89. mtSize++;
  90. }
  91. }
  92. }
  93. private void button2_Click(object sender, EventArgs e)
  94. {
  95. textBox1.Text += mtSize + "\r\n";
  96. }
  97. }
  98. }

Решение задачи: «Ошибка: "Индекс за пределами диапазона"»

textual
Листинг программы
  1. .GetLowerBound()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы