Ошибка: "Индекс за пределами диапазона" - 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()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д