- sh4d0w: Csak a profit - emberélet nem számít
- gban: Ingyen kellene, de tegnapra
- Klaus Duran: 2025 dude
- Mr Dini: Mindent a StreamSharkról!
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- laskr99: Újrakezdem a processzor és videókártya szilícium magok fotózását
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Magga: PLEX: multimédia az egész lakásban
Új hozzászólás Aktív témák
-
Watercolour
aktív tag
Üdv,
segítségeteket kérném Excel VB makróban. A nyelvet nem ismerem, bár sikerült alapszinten megértenem a szintaxisát, viszont a problémám a (matematikai) logikájával van ennek a feladatnak.
A lényeg az, hogy a feladat megoldása HIBÁS. Magával az algoritmussal van baj, gyanítom az, hogy létezik ennél optimálisabb megoldás.
A lényeg az lenne, hogy ki kellene javítani optimálisra.
Fontos lenne, aki tud, kérem nézzen rá.Adott a következő feladat:
Adott egy híd, amin N ember át szeretne kelni. Azt tudjuk, hogy nem feltétlenül egyenlő sebességgel képesek haladni. Az egyes emberek átjutásához szükséges időket jelölje T(I). Egyszerre csak ketten tudnak átkelni a hídon. Sötét van, ezért szükségük van egy lámpásra. Leghamarabb mennyi idő alatt tudnak mindnyájan a túlsó partra jutni? (NE feledjük, a lámpást az egyik átjutottnak vissza kell hoznia, hogy a többiek is lássanak az átkelés során!)Van hozzá egy megoldás leírása:
Látható, hogy 3 ember esetén a leggyorsabb bárki mással átmehet, ő jön vissza, és aki még maradt azzal újra átmegy a hídon. Az átkeléshez szükséges idő összesen T(1)+T(2)+(T(3) feltéve, hogy az embereket az átkelés sebessége szerint csökkenőbe (ez időben növekvőt jelent) rendeztük. Azaz pl. átmegy az 1. és a 2. (Idő: T(2)), visszajön az 1. (Idő: T(1)), és végül átmegy az 1. és a 3. (Idő: T(3)). Ha 4 ember van, akkor ez helyesen pl. úgy alakul, hogy: átmegy az 1. és a 2., visszajön az 1., átmegy a 3. és a 4., visszajön a 2., és végül átmegy az 1. és a 2. Észrevehető, hogy az 1. és a 2. tulajdonképpen átjuttatja a 3. és 4. párosát, és ehhez pontosan T(1)+2*T(2)+T(4) időre van szükség. majd végül ők is átmennek (Idő: T(2)). Ha az átkelők száma páros, akkor - az előzőekből helyesen következtetve - úgy tudjuk kiszámolni, hogy mennyi időre van szükség, hogy a leglassúbb idejéből elindulva minden másodikat összegzünk egészen T(4)-ig, és ehhez annyiszor T(1)+2*T(2)-t adunk hozzá, amennyi az átjuttatott párok száma. Végül ehhez még hozzáadunk T(2)-t. Páratlan esetben a 3.-at gondolatban kivéve páros esethez jutunk, és az így kapott összidőhöz még T(1)+T(3)-at hozzáadunk.És itt van rá egy kész megoldás (ami feltételezem az előző megoldás leírás alapján készült):
Itt van a hibás megoldás (xls)A makró kód a következő:
Dim N As Integer ' Az átkelni szándékozók száma
Dim Lap As Object
Dim S As Long
Dim Allando As Integer
Dim I As Integer, J As Integer
Dim A1 As Integer, A2 As Integer
Set Lap = Sheets("Alapadatok")
N = Lap.Cells(1, 1).CurrentRegion.Rows.Count - 1
Lap.Copy After:=Sheets(Sheets.Count)
Sheets("Alapadatok (2)").Name = "Átkelés"
Range(Cells(2, 1), Cells(N + 1, 1)).Select
Selection.Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Cells(2, 2).Activate
A1 = Cells(2, 1).Value
A2 = Cells(3, 1).Value
Allando = 2 * A2 + A1
S = A2
J = 0
For I = N + 1 To 5 Step -2
J = J + 2
S = S + Allando + Cells(I, 1).Value
Cells(J, 3).Value = A1 & " + " & A2
Cells(J, 4).Value = A1
Cells(J, 5).Value = A1 + A2
Cells(J + 1, 3).Value = Cells(I - 1, 1).Value & " + " & Cells(I, 1).Value
Cells(J + 1, 4).Value = A2
Cells(J + 1, 5).Value = A2 + Cells(I, 1).Value
Next
If N Mod 2 = 1 Then
S = S + Cells(4, 1).Value + Cells(2, 1).Value
J = J + 2
Cells(J, 3).Value = A1 & " + " & A2
Cells(J, 4).Value = A1
Cells(J, 5).Value = A1 + A2
Cells(J + 1, 3).Value = A1 & " + " & Cells(4, 1).Value
Cells(J + 1, 5).Value = Cells(I, 1).Value
Else
J = J + 2
Cells(J, 3).Value = A1 & " + " & A2
Cells(J, 5).Value = A2
End If
Cells(2, 2).Value = S
End SubElőre is köszönöm a segítséget.
Új hozzászólás Aktív témák
- EAFC 25
- Óra topik
- Ez össze van rakva - Segway Ninebot F3 Pro
- Redmi Note 10 Pro - majdnem minden stimmel
- Hamarosan rézhiánytól szenvedhet az egész chipgyártás
- Milyen okostelefont vegyek?
- Bambu Lab 3D nyomtatók
- Itt az igazság a Samsung állítólagos Android Auto alternatívájáról
- Külföldi rendelések: boltok, fizetés, postázás
- Napelem
- További aktív témák...
- Asztali PC , i7 6700K , 1080 Ti 11GB , 32GB DDR4 , 500GB NVME , 500GB HDD
- Asztali PC , R5 8400F , RTX 3070 , 32GB DDR5 , 500GB NVME , 2TB HDD
- Legion Go 1TB
- Lenovo LOQ 15IRX9 - i5 13450HX, 16GB, RTX 4060 8G, 1TB M.2 (Gari: 2027.03.11.)
- LG 34WR55QK-B - 34" Ívelt VA - 3440x1440 - 100Hz 5ms - FreeSync Premium - HDR 10 - USB Type-C 65W
- Telefon felváráslás!! Xiaomi 13T, Xiaomi 13T Pro, Xiaomi 14T, Xiaomi 14T Pro
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- GYÁRI TÖLTŐK DELL LENOVO HP FUJITSU TOSHIBA Macbook---------- Budapest,/MPL/Foxpost
- LG 65" C1 OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest