Здравствуйте помогите есть ли у кого нибудь программа о решение задач про рюкзак на форме c# или дельфи нашел один код но не могу его поставить на форму помогите пожалуйста
Код:
public static int maxCost = 0;
public static int MaxWeight = 0;
public static int n = 0;
public static string strTable, symstr;
public static int count;
table Form1 = new Table();
private void button1_Click(object sender, EventArgs e)
{
if (restrictionmas.Text == "" || restrictionmas.Text == "0") // Проверка ввода
{
MessageBox.Show("Введите ограничение веса!");
return;
}
if (dataBox.Text == "")
{
MessageBox.Show("Введите предметы!");
return;
}
MaxWeight = Convert.ToInt32(restrictionmas.Text);
count = 0;
string t = dataBox.Text.Trim();
string strName = "";
int p = 1; bool w=false;
for (int i = 0; i < t.Length; i++)
{
if (t[i] == '"')
{
p += 1;
w = true;
}
if (p % 2 == 0 || w)
{
strName += t[i];
}
if (w && p % 2 != 0)
strName += "\n";
w = false;
}
string[] masName = strName.Split('\n');
string[] str = t.Split(',', '\n');
int b = 0;
n = masName.Length;
int[] c = new int[n];
int[] m = new int[n];
int[] a = new int[n];
for (int j = 0; j < str.Length && b+1 <= n; j++)
{
c[b] = Convert.ToInt32(str[j + 1]);
m[b] = Convert.ToInt32(str[j + 2]);
j = j + 2;
b++;
}
search(0, a, c, m, MaxWeight, 0, 0);
if (strTable == null) { MessageBox.Show("Вес всех предметов больше ограничения!"); return; }
string[] strstrTable = strTable.Split('\n');
result.Text = Convert.ToString(maxCost);
maxCost = 0;
form.Hide();
form.grid.DataSource = null;
form.grid.ColumnCount = n;
for (int i = 0; i < n; i++)
{
form.grid.Columns[i].HeaderText = masName[i];
}
string[] massym = symstr.Split(' ');
form.grid.RowHeadersWidth = 120;
for (int i = 0; i < count; i++)
{
form.grid.Rows.Add();
resultBox.Clear();
form.grid.Rows[i].HeaderCell.Value = massym[i];
string buf = strstrTable[i];
for (int j = 0; j < form.grid.Columns.Count-1; j++)
{
form.grid.Rows[i].Cells[j].Value = buf.Substring(j, 1);
if (buf.Substring(j, 1) == "1")
resultBox.Text += masName[j] + "\n";
}
}
strTable = "";
butTable.Enabled = true;
}
static void search(int k, int[] a, int[] c, int[] m, int maxWeight, int currentWeight, int currentCost)
{
if (k >= n)
{
if (maxCost < currentCost && maxWeight >= currentWeight)
{
maxCost = currentCost;
symstr += Convert.ToString(maxCost) + ' ';
output(a);
}
}
else
{
if (currentWeight + m[k] <= maxWeight)
{
a[k] = 1;
search(k + 1, a, c, m, maxWeight, currentWeight + m[k], currentCost + c[k]);
}
a[k] = 0;
search(k + 1, a, c, m, maxWeight, currentWeight, currentCost);
}
}
static void output(int[] a)
{
for (int i = 0; i < n; i++)
{
strTable +=Convert.ToString(a[i]);
}
strTable += "\n";
count++;
}
private void ОткрытьToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string s = openFileDialog1.FileName;
StreamReader sr = new StreamReader(s);
char f = sr.ReadToEnd()[0]; sr.Close();
if (f == '?')
{
StreamReader r = new StreamReader(s);
count = 0;
dataBox.Text = r.ReadToEnd();
string t = dataBox.Text.Trim();
int ind = t.IndexOf(' ');
restrictionmas.Text = t.Substring(1, ind - 1);
int tri = ind--;
ind++;
t = t.Substring(ind, t.Length - tri);
dataBox.Text = t.Trim();
r.Close();
}
else MessageBox.Show("Неверный формат данных!");
}
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
/
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
sw.WriteLine("?" + restrictionmas.Text + " " + dataBox.Text);
sw.Close();
}
}
private void оПрограммеРюкзакToolStripMenuItem_Click(object sender, EventArgs e)
{
About form = new About();
form.Show();
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Form.ActiveForm.Close();
}
private void restrictionmas_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
e.Handled = true;
}
private void Clear_Click(object sender, EventArgs e)
{
dataBox.Clear();
resultBox.Clear();
restrictionmas.Clear();
result.Text="";
butTable.Enabled = false;
}
private void Insert_Click(object sender, EventArgs e)
{
dataBox.Clear();
Insert form = new Insert();
form.Owner = this;
form.ShowDialog();
count = 0;
}
private void сохранитьРезультатToolStripMenuItem_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
sw.WriteLine(resultBox.Text);
sw.Close();
}
}
private void помощьToolStripMenuItem_Click(object sender, EventArgs e)
{
Help form = new Help();
form.Owner = this;
form.ShowDialog();
}
private void открытьРезультатToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string s = openFileDialog1.FileName;
StreamReader sr = new StreamReader(s);
resultBox.Text = sr.ReadToEnd();
sr.Close();
}
}
private void butExit_Click(object sender, EventArgs e)
{
Form1.ActiveForm.Close();
}
private void butTable_Click(object sender, EventArgs e)
{
form.ShowDialog();
}