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