|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 978
|
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 @ 4900 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 AMD Radeon RX 9070 XT | 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 | Mic Oktava MK 012 Black | Display LG OLED 48C1 @ 2160p 120Hz VRR FreeSync |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:44.