πΆ ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ! ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²!
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ? ΠΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ π€·ββοΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π·Π°Π΄Π°ΡΡ: Π ΠΌΠ°ΡΡΠΈΠ²e ΠΈΠ· size ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ ΠΈΠ· m ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΡ ΡΠ»eΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ 1: size = 10, m = 3,
array = { 4 5 0 [7 4 4] 6 2 6 3 }
max_sum = 15
ΠΡΠΈΠΌΠ΅Ρ 2: size = 20, m = 5,
array = { 7 8 4 8 3 4 3 1 [7 7 8 9 9] 0 7 9 8 8 1 5 }
max_sum = 40
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ?
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΠ°ΠΌΡΠΉ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ
ΠΠ°ΠΉΡΠΈ Π²ΡΠ΅ ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ, Π·Π°ΡΠ΅ΠΌ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π’ΠΎ Π΅ΡΡΡ
ΠΡΠΊΠ°ΡΡ ΡΡΠΌΠΌΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΡ m ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ
ΠΠ°ΠΉΡΠΈ ΡΡΠΌΠΌΡ ΠΏΠ΅ΡΠ²ΡΡ m ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 3
Π‘ΠΏΠΎΡΠΎΠ± 1: 14 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 5 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 5 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 5 679 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 5 696 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 10 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 11 339 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 11 240 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 100 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 103 155 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 103 239 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 250 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 215 566 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 214 921 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
PS ΠΏΡΠΎ ΠΏΠ°ΠΌΡΡΡ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π²ΡΠ΅Π³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ.
π€ Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ?
ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊ Π½Π° github
#Π°Π»Π³ΠΎΡΠΈΡΠΌΡ #csharp
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ? ΠΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ π€·ββοΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π·Π°Π΄Π°ΡΡ: Π ΠΌΠ°ΡΡΠΈΠ²e ΠΈΠ· size ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ ΠΈΠ· m ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΡ ΡΠ»eΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ 1: size = 10, m = 3,
array = { 4 5 0 [7 4 4] 6 2 6 3 }
max_sum = 15
ΠΡΠΈΠΌΠ΅Ρ 2: size = 20, m = 5,
array = { 7 8 4 8 3 4 3 1 [7 7 8 9 9] 0 7 9 8 8 1 5 }
max_sum = 40
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ?
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΠ°ΠΌΡΠΉ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ
ΠΠ°ΠΉΡΠΈ Π²ΡΠ΅ ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ, Π·Π°ΡΠ΅ΠΌ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π’ΠΎ Π΅ΡΡΡ
int m = ...
int[] array = ...
int[] sums = new int[size - m + 1];
for (int i = 0; i <= size - m; i++)
{
int t = 0;
for (int j = i; j < i + m;j++) t += array[j];
sums[i] = t;
}
int max = sums[0];
for (int i = 0; i < sums1.Length; i++)
{
if (sums[i] > max) max = sums[i];
}
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± β Ρ
ΠΎΡΠΎΡΠΈΠΉ (ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ), Π½ΠΎ Π½Π° Π΄Π΅Π»Π΅ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠΉΡΡ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π»ΡΡΡΠ΅ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ:ΠΡΠΊΠ°ΡΡ ΡΡΠΌΠΌΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΡ m ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ
int max = 0;
for (int i = 0; i <= size - m; i++)
{
int t = 0;
for (int j = i; j < i + m; j++)
{
t += array[j];
}
if (t > max) max = t;
}
Π’ΡΠ΅ΡΠΈΠΉ β Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΠ°ΠΌΡΠΉ Ρ
ΠΎΡΠΎΡΠΈΠΉ:ΠΠ°ΠΉΡΠΈ ΡΡΠΌΠΌΡ ΠΏΠ΅ΡΠ²ΡΡ m ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
int max = 0;
for (int i = 0; i < m; i++) max += array[i];
ΠΠ°ΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ°ΡΡ ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ Π² ΡΡΠΌΠΌΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠΌΠΌΡ Ρ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ:int temp = max;
for (int i = 1; i <= size - m; i++)
{
temp = temp - array[i - 1] + array[i + (m - 1)];
if (temp > max) max = temp;
}
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:Π΄Π»Ρ size = 1 000 000 ΠΈ m = 3
Π‘ΠΏΠΎΡΠΎΠ± 1: 14 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 5 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 5 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 5 679 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 5 696 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 10 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 11 339 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 11 240 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 100 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 103 155 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 103 239 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
Π΄Π»Ρ size = 1 000 000 ΠΈ m = 250 000
Π‘ΠΏΠΎΡΠΎΠ± 1: 215 566 ms
Π‘ΠΏΠΎΡΠΎΠ± 2: 214 921 ms
Π‘ΠΏΠΎΡΠΎΠ± 3: 2 ms
PS ΠΏΡΠΎ ΠΏΠ°ΠΌΡΡΡ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π²ΡΠ΅Π³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ.
π€ Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ?
ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊ Π½Π° github
#Π°Π»Π³ΠΎΡΠΈΡΠΌΡ #csharp