|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
|
[DELPHI] cerco aiuto urgentissimo please
Salve!intanto ringrazio chiunque stia leggendo il topic...e ringrazierò ancorà di più chiunque potrà pormi il suo aiuto
Scrivere una procedura che riceve in input un grafo orientato aciclico pesato e due vertici s,t, e restituisce il numero di cammini da s a t nel grafo G con peso maggiore di un intero k fissato. La struttura se ho ben capito dovrebbe essere questa : Type lista=^elemento; elemento=record inf:integer; peso_Arco:integer; next:lista; end; Tipografo=array[1..10] of lista; oppure mi converrebbe usare una matrice di adiacenza? si accettano aiuti |
|
|
|
|
|
#2 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16213
|
Quando hai l'esame?
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
|
non si sa bene...dovrebbe essere o domani o lunedì,entro stasera lo saprò
|
|
|
|
|
|
#4 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16213
|
Purtroppo non ricordo abbastanza Pascal per esserti utile
Per una matrice di adiacenza su n nodi ti ci vogliono n*n elementi. Questi elementi di solito sono 0 o 1, ma potrebbero essere numeri. Per esempio, se l'arco(i,j) ha peso k, potresti porre M[i,j]=k; se non esiste, poni M[i,j]=0. Questo nell'ipotesi che tutti i pesi siano positivi. Se invece vuoi implementare una lista di adiacenza, allora, devi fare qualcosa di più elaborato dell'implementazione canonica, in cui gli elementi di questa lista sono nodi, e di conseguenza non hanno peso. Dovresti quindi associare una lista di oggetti che hanno un campo di tipo nodo, e un campo di tipo peso.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
|
e come pensi che posso fare a contare il numero di cammini da s a t con peso maggiore di un intero k ?
non tanto al livello di codice quanto di pseudocodice |
|
|
|
|
|
#6 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16213
|
Ora come ora mi viene in mente solo: fai una visita in ampiezza a partire da s, associando ad ogni passo (che corrisponde a un cammino) il suo peso. Quando arrivi a t, se il peso è maggiore di k, incrementi un contatore.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
|
ti ringrazio per l'aiuto...l'idea sembra buona
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jul 2006
Città: Palermo
Messaggi: 258
|
ho visto che proprio in quel modo non mi riesce....e ho provato un'altro modo....non so se sia una boiata o meno
Codice:
procedure calcolapeso(G:tipografo;cont,s,t:integer;var num_cammini:integer);
var i:integer;
begin
if s<>t then begin
for i:=1 to maxvertici do
if (G[s,i]<>0) then begin
cont:=cont+G[s,i];
calcolapeso(G,cont,i,t,num_cammini);
end;
end
else if cont>k then
num_cammini:=num_cammini+1;
end;
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:25.




















