mirror of
https://github.com/Lendaia/oe-alga-feladatok.git
synced 2026-04-23 04:16:32 +01:00
s
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using Microsoft.Identity.Client;
|
||||||
|
|
||||||
namespace OE.ALGA.Optimalizalas
|
namespace OE.ALGA.Optimalizalas
|
||||||
{
|
{
|
||||||
@@ -11,7 +13,7 @@ namespace OE.ALGA.Optimalizalas
|
|||||||
Func<int, T, T[], bool> fk;
|
Func<int, T, T[], bool> fk;
|
||||||
Func<T[], int> josag;
|
Func<T[], int> josag;
|
||||||
|
|
||||||
public int Lepesszam { get; set;}
|
public int Lepesszam { get; set;} = 0;
|
||||||
|
|
||||||
public VisszalepesesOptimalizacio(int n, int[] M, T[,] R, Func<int, T, bool> ft, Func<int, T, T[], bool> fk, Func<T[], int> josag)
|
public VisszalepesesOptimalizacio(int n, int[] M, T[,] R, Func<int, T, bool> ft, Func<int, T, T[], bool> fk, Func<T[], int> josag)
|
||||||
{
|
{
|
||||||
@@ -25,12 +27,50 @@ namespace OE.ALGA.Optimalizalas
|
|||||||
|
|
||||||
public bool[] OptimalisMegoldas()
|
public bool[] OptimalisMegoldas()
|
||||||
{
|
{
|
||||||
|
int szint = 0;
|
||||||
|
T[] E = new T[n];
|
||||||
|
bool van = false;
|
||||||
|
T[] O = new T[n];
|
||||||
|
Backtrack(szint, ref E, ref van, ref O);
|
||||||
|
if (van)
|
||||||
|
{
|
||||||
|
return O;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new Exception("Nincs megoldas");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual public void Backtrack(int szint, T[] E, bool van, T[] O)
|
virtual public void Backtrack(int szint, ref T[] E, ref bool van, ref T[] O)
|
||||||
{
|
{
|
||||||
|
int i = 0;
|
||||||
|
while(i < M[szint])
|
||||||
|
{
|
||||||
|
Lepesszam++;
|
||||||
|
i++;
|
||||||
|
if (ft(szint, R[szint, i]))
|
||||||
|
{
|
||||||
|
if(fk(szint, R[szint, i], E))
|
||||||
|
{
|
||||||
|
E[szint] = R[szint, i];
|
||||||
|
|
||||||
|
if (szint == n)
|
||||||
|
{
|
||||||
|
if ((!van) || josag(E) > josag(O))
|
||||||
|
{
|
||||||
|
O = E;
|
||||||
|
}
|
||||||
|
van = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Backtrack(szint+1, ref E, ref van, ref O);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class VisszalepesesHatizsakPakolas
|
public class VisszalepesesHatizsakPakolas
|
||||||
@@ -44,7 +84,8 @@ namespace OE.ALGA.Optimalizalas
|
|||||||
}
|
}
|
||||||
virtual public bool[] OptimalisMegoldas()
|
virtual public bool[] OptimalisMegoldas()
|
||||||
{
|
{
|
||||||
|
int[] M;
|
||||||
|
bool[] R;
|
||||||
}
|
}
|
||||||
public int OptimalisErtek()
|
public int OptimalisErtek()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user