• Non ci sono risultati.

30/10/20061

N/A
N/A
Protected

Academic year: 2022

Condividi "30/10/20061"

Copied!
1
0
0

Testo completo

(1)

30/10/2006

1

Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti)

Laboratorio di Algoritmi a.a. 2006-07

Esercitazione 3 Segmento di somma massima

e altri esercizi.

AlgELab-06-07 - Lab-Es. 3 2

Problemi 1 e 2 (di ripasso Programmazione 1).

• Problema concreto: trovare il massimo numero di giorni invernali consecutivi in cui si è registrato un valore negativo della temperatura. Si traduce schematicamente nel seguente:

• Problema 1: Si definisca una procedura la quale, preso come argomento un array di interi, restituisca la lunghezza del più lungo segmento costituito da elementi tutti negativi.

• Problema 2 (del più lungo segmento crescente): Si definisca una procedura la quale, preso come argomento un array di interi, restituisca la lunghezza del più lungo segmento strettamente crescente.

AlgELab-06-07 - Lab-Es. 3 3

Il segmento di somma massima: soluzione quadratica

Problema 3: Si definisca una procedura la quale, preso un array di interi, restituisca la somma degli elementi del segmento di somma massima.

Soluzione naturale:

public static int sss(int[] a) { int n = a.length;

int max = a[0];

for(int i = 0; i < n; i++) {

calcola la somma di a[i .. j]per ognij compreso fraied n-1 e confrontala con max, eventualmente aggiornando max;

} }

AlgELab-06-07 - Lab-Es. 3 4

Il segmento di somma massima: soluzione ottima

Problema 4: Si completi la definizione in Java della procedura illustrata nella Lezione 4 e, utilizzando la classe ArrayUtil creata in laboratorio, si provi il metodo con input diversi. Si usi l'input/output su file, in modo da avere la registrazione delle prove.

AlgELab-06-07 - Lab-Es. 3 5

Il segmento di somma massima: variante.

Problema 5. Si realizzi e si provi (per mezzo di un opportuno main) la variante considerata nell'esercitazione in aula, cioè:

Si definisca una procedura ottima la quale, preso un array di interi, restituisca una terna di interi (sotto forma di un array di tre elementi, oppure di un oggetto-terna definito opportunamente) costituita da:

•l'indice iniziale del segmento di somma massima;

•la lunghezza di tale segmento;

•la somma degli elementi di tale segmento.

Se vi sono più segmenti di somma massima, restituisca il segmento più corto, cioè quello di lunghezza minore.

Si realizzi anche la versione quadratica della variante, e nella prova si invochino le due versioni su uno stesso array (magari casuale), verificando che restituiscono lo stesso risultato.

AlgELab-06-07 - Lab-Es. 3 6

Esercizio facoltativo difficile sulla bandiera (suggerito inizialmente da uno studente).

Bandiera con numero arbitrario pdi colori.

Si definisca una procedurastatic void dividiColori(int[] a, int p) la quale, preso un array di numeri naturali (interi non negativi) ed un numero naturale p, partizioni l'array in base al resto della divisione intera per p, in modo analogo a quello della bandiera tricolore.

Si definisca una procedura di controllo del risultato, e per mezzo di essa si provi in un opportuno main la procedura dividiColori.

Non è obbligatorio consegnarlo !

Riferimenti

Documenti correlati

Ciascuno di questi pu` o essere circondato da un cerchio di raggio δ, e quindi questi punti sono singolarit` a isolate (come deve essere per un polo); naturalmente, δ diventa sempre

2 punti: risposta corretta, soluzione migliore, buona proprietà di linguaggio, esposizione chiara e leggibile.. 1,8 punti: risposta corretta, soluzione migliore con qualche

2 punti: risposta corretta, soluzione migliore, buona proprietà di linguaggio, esposizione chiara e leggibile.. 1,8 punti: risposta corretta, soluzione migliore con qualche

dove numero_elementi deve essere o un valore intero, o un’espressione costante oppure una variabile che sia stata però istanziata prima della definizione dell'array; ad esempio,

Scelti su una retta un primo ed un diverso secondo punto, l’identificazione del numero 0 col primo punto e del numero 1 col secondo punto si estende in modo naturale ad

I: riempimento; il valore di ciascun elemento dello array Pi: il numero degli elementi da inserire (riempimento) non può essere maggiore della cardinalità dell’array. U:

[r]

12.13 Un anello a fattorizzazione unica ` e un anello con la propriet` a che ogni elemento si pu` o scrivere in modo unico come prodotto di elementi irriducibili.. Per trattare