Ошибка: "Индекс за пределами диапазона" - C# (178307)
Формулировка задачи:
Пишу программу по алгоритму Куна(максимального паросочетания) и на строке adj[i].GetLowerBound(j); выводит ощибку: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Помогите разобраться
Могу представить код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _21_февраля
{
public partial class Form1 : Form
{
int N, M, mtSize=0, m=0;
List<bool> used = new List<bool>();
List<int> mt = new List<int>();
List<Array> adj = new List<Array>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private bool kuhn(int v)
{
if (used[v])
{
return false;
}
used[v] = true;
int[,] A;
int L = adj[v].GetLength(v);
A = new int[L, L];
for (int i = 0; i < adj[v].GetLength(v); ++i)
{
int w = A[v,i];
if (mt[w] == -1 || kuhn(mt[w]))
{
mt[w] = v;
return true;
}
}
return false;
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = " Максимальное количество пар:\r\n";
// textBox1.Text += mtSize+"\r\n";
double[,] A;
A = new double[N, M];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
try
{
A[i, j] = Convert.ToDouble(dataGridView1[i, j].Value);
if(A[i,j]==1) m++;
adj[i].GetLowerBound(j);
used.Add(false);
mt.Add(-1);
}
catch
{
MessageBox.Show("Исправьте значения","Ошибка");
return;
}
}
}
textBox1.Text += m+"()\r\n";
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
N = (int)numericUpDown1.Value;
dataGridView1.RowCount = N;
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
M = (int)numericUpDown2.Value;
dataGridView1.ColumnCount = M;
}
private void solve()
{
for (int v = 0; v <N; ++v)
{
used.Add(false);
if (kuhn(v))
{
mtSize++;
}
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text += mtSize + "\r\n";
}
}
}Решение задачи: «Ошибка: "Индекс за пределами диапазона"»
textual
Листинг программы
.GetLowerBound()