- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- MasterDeeJay: RAM gondolatok: Mennyi a minimum? DDR3 is jó?
- Luck Dragon: Asszociációs játék. :)
- gerner1
- Geri Bátyó: Agglegénykonyha 14 – Kések, késélezés
- sziku69: Fűzzük össze a szavakat :)
- mefistofeles: Az elhízás nem akaratgyengeség! 2 Ahogy én csinálom.......
- GoodSpeed: Samsung Galaxy A56 5G
- ldave: New Game Blitz - 2026
-
LOGOUT

Új hozzászólás Aktív témák
-
pmonitor
aktív tag
válasz
sztanozs
#15629
üzenetére
Ez a kód:
static void Teszt_5(char[] arr)
{
char[] arr2 = (char[])arr.Clone();
int size = arr.Length;
QuickSort(arr2, 0, size - 1);
//Array.Sort(arr2);
int n = arr2.Length;
int i, j;
char temp;
//for (i = 0; i < n; ++i) arr2[i] = i + 1;
while (true)
{
// kiirjuk az aktualis permutaciot
/*for (i = 0; i < n; ++i) Console.Write("{0} ", arr2[i]);
Console.WriteLine("");*/
// megkeressuk, hol kezdodik az utolso monoton csokkeno reszsorozat
for (i = n - 2; i >= 0 && arr2[i] >= arr2[i + 1]; --i) ;
// ha a teljes sorozat monoton csokkeno, akkor vegeztunk
if (i < 0) break;
// a csokkeno reszsorozat elotti elemet ki kell cserelnunk a reszsorozatban nagysag szerint rakovetkezovel
for (j = n - 1; arr2[j] <= arr2[i]; --j) ;
temp = arr2[i]; arr2[i] = arr2[j]; arr2[j] = temp;
// tovabbra is monoton csokkeno a reszsorozatunk, forditsuk meg, hogy monoton novekedo legyen
for (j = i + 1; j < n + i - j; ++j)
{
temp = arr2[j]; arr2[j] = arr2[n + i - j]; arr2[n + i - j] = temp;
}
}
}Ennek a kódnak:
static void IsmPermutacio(char[] tomb2, int[] N, int n, int[] W1, int s, int i)
{
int[] V = new int[n];
int[] W = new int[n];
CopyMemory(W, W1, (uint)(n * intSize));
//Array.Copy(W1, W, n);
if (i == 0)
{
for (int l = 0; l < s; ++l) W[l] = -1;
}
if (s != 0)
{
bool ind = true;
do
{
Kombinacio(V, s, N[i], ref ind);
if (!ind)
{
Betesz(N[i], n, V, W, i);
IsmPermutacio(tomb2, N, n, W, s - N[i], i + 1);
Kivesz(W, n, i);
}
} while (!ind);
}
else
{
Betesz(N[i], n, V, W, i);
//*****************************************************
/*for (int q = 0; q < n; ++q) Console.Write(tomb2[W[q]]);
Console.WriteLine("");*/
//*****************************************************
for (int l = 0; l < n; ++l) W[l] = -1;
}
}
static void Kombinacio(int[] V, int n, int k, ref bool ind)
{
if (ind)
{
for (int i = 0; i < k; ++i) V[i] = i;
ind = false;
return;
}
for (int i = k - 1; i > -1; --i)
{
if (V[i] < n - k + i)
{
++V[i];
for (int j = i + 1; j < k; ++j) V[j] = V[j - 1] + 1;
return;
}
}
ind = true;
}
static void Betesz(int ni, int n, int[] V, int[] W, int i)
{
int j = -1, l = 0;
for (int p = 0; p < ni; ++p)
{
while (l < n)
{
if (W[l] == -1) ++j;
if (j == V[p])
{
W[l] = i;
break;
}
++l;
}
}
}
static void Kivesz(int[] W, int n, int i)
{
for (int l = 0; l < n; ++l) if (W[l] == i) W[l] = -1;
}Nem az optimalizálása, hanem teljesen más(egyszerűbb) algoritmus.
És sztem az első algoritmus érthetőbb is.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Dögrováson lévő Samsung telefonból még mindig csinálhatunk DeX-es minigépet
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen billentyűzetet vegyek?
- A megszokottól eltérő képaránnyal jön a JapanNext monitora
- Xbox Series X|S
- Spórolós topik
- Gyúrósok ide!
- Fejhallgató erősítő és DAC topik
- Tőzsde és gazdaság
- Mobil flották
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
- Lenovo ThinkPad T14s Gen 4 Ryzen 5 PRO 7540U 14" FHD+ 32GB 512GB Lenovo gar: 2028.01.07!
- BESZÁMÍTÁS! MSI B450M R5 3600X 16GB DDR4 512GB SSD RTX 4060 8GB Zalman S2 TG Cooler Master 650W
- HIBÁTLAN iPhone 14 Pro Max 256GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen, MS4513
- iking.hu Apple iPhone 15 128GB Blue használt, karcmentes 86% akku 6 hónap garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

