|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 983
|
Operare con array e partizioni
Ciao a tutti, mi sto cimentando con array e partizioni.
Vorrei sottoporre un problema alla vostra attenzione: Dato A, array 1D di tipo integer di dimensione N, contenente N elem. positivi e N sottomultiplo di k. Individuare le sottosequenze di lunghezza k; Tale array A si può guardare come formato da successive sotto sequenze di lunghezza k. progettare un algoritmo in pascal-like che restituisca in output un array "B" monodimensionale di tipo Logical in cui in ciascun elemento B(i), ci sia: TRUE: se nella i-ma sottosequenza un elemento è uguale alla somma dei rimanenti elementi della sottosequenza. FALSE: altrimenti. Sono poco pratico sul partizionamento degli array, comunque ho elaborato un algoritmo risolutivo: Codice:
var A[n]: array of integer
var B[blocchi]: array of logical
var n, k, inizio, fine, blocchi, count: integer
begin
inizio = 1; fine = k; blocchi = n/k; count = 1;
while (fine <= n) do
Repeat
somma = 0.0;
for i=k to inizio+1 do
somma = somma + A[i]
endfor
if (A[inizio]=somma) then
B[count]=TRUE
else
B[count]=FALSE
endif
inizio=inizio+1; count=count+1;
Until (inizio >= k)OR(B[inizio-1]=TRUE)
inizio=inizio + k; fine = fine + k;
endwhile
end
Spero possiate voi darmi qualche dritta, correggere la mia soluzione o suggerire qualunque tipo di miglioramento che è possibile apportare. Ve ne sarei grato. Cordialmente Andrea
__________________
Workstation: CPU AMD Ryzen 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU Radeon RX 9070 XT + RTX 4070 Super | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:06.



















