Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Έστω ότι θέλουμε να αναδιατάξουμε τα βαγόνια μας στην Aθήνα ώστε φεύγοντας από Αθήνα προς Θεσσαλονίκη να αφήνει πάντα το τελευταίο βαγόνι σε ενδιάμεσες στάσεις

 

Αρχική Σειρά:            Λαμία-Θεσσαλονίκη-Λάρισα

Θα πρέπει να γίνει:  Θεσσαλονίκη-Λάρισα-Λαμία

 

(Με τη σειρά που εμφανίζονται οι πόλεις από Αθήνα προς Θεσσαλονίκη δηλαδή!)

 

Θα ήθελα κάποια βοήθεια, το σκεπτικό δηλαδή!

 

Τι σκέφτηκα εγώ?

#define MAX_WAGONS 4

struct WAGON
{
	int wagonID;
	int destID;
	char cityName[15];
};

struct STACK
{
	WAGON wlist[MAX_WAGONS];
	int totalItems;
};

void MyFunction(...)
{
	STACK myStack;
	
	/*
		myStack[0]: Left side of Horizontal line
		myStack[1]: Right side of Horizontal line
		myStack[2]: Up side of Vertical line
		myStack[3]: Down side of Vertical line
	*/
	while(myStack[0] < MAX_WAGONS)
	{
		// Re Arrange Wagons
		// Warning! some moves cant happen, 
		// example: 
		// can't move from myStack[3] to myStack[0] if myStack[2] has wagon
	}
}

DSC_0126.jpg

 



κάποιον πιο εύκολο τρόπο που να μην ξεφεύγει από την λογική όμως!

Δημοσ.

Μια χαρά ακουγεται αυτός ο τρόπος. Θα κάνεις insertion sort on the fly επι της ουσίας, και θα χρησιμοποιείς τα stack για τα "περα-δώθε".

Αν δεν ήταν βαγόνια (οπότε να υπάρχουν και φυσικοί περιορισμοί) θα σου έλεγα χρησιμοποίησε κατευθείαν linked-list. 

Δημοσ.

Ok! το βρήκα! ήταν πιο εύκολο από τι νόμιζα

 

3 stacks

 

input , output, temp

 

και κάθε φορά πηγαίνω στην output αν είναι αυτό που θέλω αλλιώς τα πηγαίνω στην Temp ή στην Input πάλι πίσω (ανάλογα)

Δημοσ.

Ok! το βρήκα! ήταν πιο εύκολο από τι νόμιζα

 

3 stacks

 

input , output, temp

 

και κάθε φορά πηγαίνω στην output αν είναι αυτό που θέλω αλλιώς τα πηγαίνω στην Temp ή στην Input πάλι πίσω (ανάλογα)

 

Θεωρητικά και μόνο ένα Linked List θα μπορούσες να έχεις για να κάνεις τη δουλειά σου. Το θέμα είναι αν η τελική λύση είναι εφικτή με βάση τους φυσικούς περιορισμούς (το γεγονός ότι δεν μπορείς απλά να "ανοίξεις τα βαγόνια" και να βάλεις ένα στη μέση π.χ.)

 

Οπότε απλά να είσαι σίγουρος ότι αυτό εξυπηρετεί αυτούς τους περιορισμούς...δηλαδή τις μετακινήσεις προς και απο το temp.

Δημοσ.

Ουσιαστικά προσομοίωση κάνω, στην αρχή σκέφτηκα και εγώ την λίστα άλλα όπως είπα υπάρχουν φυσικοί περιορισμοί!

 

Μόνο ο τσακ νορις θα τα μετακινούσε στην πραγματικότητα με την λογική της λίστας :)

 

Κάτι ακόμα,

Θέλω τώρα να τα προσομοιώσω στην κονσόλα, θέλω να κάνω shift το κείμενο στην οθόνη δεξιά και όταν κάποιο βαγόνι φτάσει στα όιρα της κονσόλας να μην αναδηπληθεί γιατί χαλάει όλο το σχήμα, γνωρίζεις πως μπορεί να γίνει κάτι τέτοιο? δηλαδή απλά να κρύβεται από την οθόνη και να μην κάνει wrap.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...