From ac894d978c48606edb3bcff5ad3e692dfe6ab40c Mon Sep 17 00:00:00 2001 From: Lendaia Mirai Date: Thu, 27 Nov 2025 21:27:09 +0100 Subject: [PATCH] s --- ALGA/Optimalizalas/09_VisszalepesesKereses.cs | 51 +++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/ALGA/Optimalizalas/09_VisszalepesesKereses.cs b/ALGA/Optimalizalas/09_VisszalepesesKereses.cs index 2dfef96..976236b 100644 --- a/ALGA/Optimalizalas/09_VisszalepesesKereses.cs +++ b/ALGA/Optimalizalas/09_VisszalepesesKereses.cs @@ -1,4 +1,6 @@ using System; +using System.Linq; +using Microsoft.Identity.Client; namespace OE.ALGA.Optimalizalas { @@ -11,7 +13,7 @@ namespace OE.ALGA.Optimalizalas Func fk; Func josag; - public int Lepesszam { get; set;} + public int Lepesszam { get; set;} = 0; public VisszalepesesOptimalizacio(int n, int[] M, T[,] R, Func ft, Func fk, Func josag) { @@ -25,12 +27,50 @@ namespace OE.ALGA.Optimalizalas 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 @@ -44,7 +84,8 @@ namespace OE.ALGA.Optimalizalas } virtual public bool[] OptimalisMegoldas() { - + int[] M; + bool[] R; } public int OptimalisErtek() {