mirror of
https://github.com/Lendaia/oe-alga-feladatok.git
synced 2026-04-23 04:16:32 +01:00
cigi
This commit is contained in:
@@ -1,4 +1,69 @@
|
|||||||
namespace OE.ALGA.Optimalizalas
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace OE.ALGA.Optimalizalas
|
||||||
{
|
{
|
||||||
// 8. heti labor feladat - Tesztek: 08_DinamikusProgramozasTesztek.cs
|
public class DinamikusHatizsakPakolas
|
||||||
|
{
|
||||||
|
HatizsakProblema problema;
|
||||||
|
int[,] tablazat;
|
||||||
|
int lepesszam;
|
||||||
|
public int LepesSzam
|
||||||
|
{
|
||||||
|
get { return lepesszam; }
|
||||||
|
}
|
||||||
|
public DinamikusHatizsakPakolas(HatizsakProblema problema)
|
||||||
|
{
|
||||||
|
this.problema = problema;
|
||||||
|
}
|
||||||
|
public int[,] TablazatFeltoltes()
|
||||||
|
{
|
||||||
|
int[,] F = new int[problema.N + 1, problema.Wmax + 1];
|
||||||
|
for (int i = 0; i < problema.N; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < problema.Wmax; j++)
|
||||||
|
{
|
||||||
|
if (i == 0 || j == 0)
|
||||||
|
{
|
||||||
|
F[i, j] = 0;
|
||||||
|
}
|
||||||
|
else if (j < problema.W[i])
|
||||||
|
{
|
||||||
|
F[i, j] = F[i - 1, j];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int[] tomb = new int[] { (F[i - 1, j]), (F[i - 1, j - problema.W[i]] + Convert.ToInt32(problema.P[i])) };
|
||||||
|
F[i, j] = tomb.Max();
|
||||||
|
}
|
||||||
|
lepesszam++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return F;
|
||||||
|
}
|
||||||
|
public float OptimalisErtek()
|
||||||
|
{
|
||||||
|
tablazat = TablazatFeltoltes();
|
||||||
|
return tablazat[problema.N, problema.Wmax];
|
||||||
|
}
|
||||||
|
public bool[] OptimalisMegoldas()
|
||||||
|
{
|
||||||
|
float optimalisertek = OptimalisErtek();
|
||||||
|
int t = problema.N;
|
||||||
|
int h = problema.Wmax;
|
||||||
|
bool[] optimails = new bool[problema.N];
|
||||||
|
while (t > 0 && h > 0)
|
||||||
|
{
|
||||||
|
if (tablazat[t, h] != tablazat[t - 1, h])
|
||||||
|
{
|
||||||
|
optimails[t] = true;
|
||||||
|
h = h - problema.W[t];
|
||||||
|
}
|
||||||
|
t--;
|
||||||
|
}
|
||||||
|
return optimails;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,67 +1,67 @@
|
|||||||
//using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
//using System;
|
using System;
|
||||||
//using OE.ALGA.Optimalizalas;
|
using OE.ALGA.Optimalizalas;
|
||||||
|
|
||||||
//namespace OE.ALGA.Tesztek.Optimalizalas
|
namespace OE.ALGA.Tesztek.Optimalizalas
|
||||||
//{
|
{
|
||||||
// [TestFixture(Category = "Optimalizalas", TestName = "08 - Dinamikus Programozás Tesztek")]
|
[TestFixture(Category = "Optimalizalas", TestName = "08 - Dinamikus Programozás Tesztek")]
|
||||||
// public class DinamikusProgramozasTesztek
|
public class DinamikusProgramozasTesztek
|
||||||
// {
|
{
|
||||||
// [TestCase]
|
[TestCase]
|
||||||
// public void UresTeszt()
|
public void UresTeszt()
|
||||||
// {
|
{
|
||||||
// HatizsakProblema problema = new HatizsakProblema(0, 0, [], []);
|
HatizsakProblema problema = new HatizsakProblema(0, 0, [], []);
|
||||||
// DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
||||||
// Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
// {
|
{
|
||||||
// Assert.That(opt.OptimalisErtek(), Is.EqualTo(0));
|
Assert.That(opt.OptimalisErtek(), Is.EqualTo(0));
|
||||||
// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(Array.Empty<bool>()));
|
Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(Array.Empty<bool>()));
|
||||||
// Assert.That(opt.LepesSzam, Is.EqualTo(0));
|
Assert.That(opt.LepesSzam, Is.EqualTo(0));
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
// [TestCase]
|
[TestCase]
|
||||||
// public void JegyzetbenLevoPeldaErtekTeszt()
|
public void JegyzetbenLevoPeldaErtekTeszt()
|
||||||
// {
|
{
|
||||||
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
|
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
|
||||||
// DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
||||||
// Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
// {
|
{
|
||||||
// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek));
|
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek));
|
||||||
// Assert.That(opt.LepesSzam, Is.EqualTo(24));
|
Assert.That(opt.LepesSzam, Is.EqualTo(24));
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
// [TestCase]
|
[TestCase]
|
||||||
// public void JegyzetbenLevoPeldaMegoldasTeszt()
|
public void JegyzetbenLevoPeldaMegoldasTeszt()
|
||||||
// {
|
{
|
||||||
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
|
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
|
||||||
// DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
||||||
// Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
// {
|
{
|
||||||
// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas));
|
Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas));
|
||||||
// Assert.That(opt.LepesSzam, Is.EqualTo(24));
|
Assert.That(opt.LepesSzam, Is.EqualTo(24));
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
// [TestCase]
|
[TestCase]
|
||||||
// public void NagyPeldaMegoldasErtekTeszt()
|
public void NagyPeldaMegoldasErtekTeszt()
|
||||||
// {
|
{
|
||||||
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
|
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
|
||||||
// DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
||||||
// Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
// {
|
{
|
||||||
// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek));
|
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek));
|
||||||
// Assert.That(opt.LepesSzam, Is.EqualTo(1700));
|
Assert.That(opt.LepesSzam, Is.EqualTo(1700));
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
// [TestCase]
|
[TestCase]
|
||||||
// public void NagyPeldaMegoldasTeszt()
|
public void NagyPeldaMegoldasTeszt()
|
||||||
// {
|
{
|
||||||
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
|
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
|
||||||
// DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
DinamikusHatizsakPakolas opt = new DinamikusHatizsakPakolas(problema);
|
||||||
// Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
// {
|
{
|
||||||
// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.nagy_optimalis_pakolas));
|
Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.nagy_optimalis_pakolas));
|
||||||
// Assert.That(opt.LepesSzam, Is.EqualTo(1700));
|
Assert.That(opt.LepesSzam, Is.EqualTo(1700));
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
Reference in New Issue
Block a user