Rafahl_r Δημοσ. 23 Ιουνίου 2013 Δημοσ. 23 Ιουνίου 2013 Έστω ότι θέλουμε να αναδιατάξουμε τα βαγόνια μας στην 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 } } κάποιον πιο εύκολο τρόπο που να μην ξεφεύγει από την λογική όμως!
ZAKKWYLDE Δημοσ. 23 Ιουνίου 2013 Δημοσ. 23 Ιουνίου 2013 Μια χαρά ακουγεται αυτός ο τρόπος. Θα κάνεις insertion sort on the fly επι της ουσίας, και θα χρησιμοποιείς τα stack για τα "περα-δώθε". Αν δεν ήταν βαγόνια (οπότε να υπάρχουν και φυσικοί περιορισμοί) θα σου έλεγα χρησιμοποίησε κατευθείαν linked-list.
Rafahl_r Δημοσ. 24 Ιουνίου 2013 Μέλος Δημοσ. 24 Ιουνίου 2013 Ok! το βρήκα! ήταν πιο εύκολο από τι νόμιζα 3 stacks input , output, temp και κάθε φορά πηγαίνω στην output αν είναι αυτό που θέλω αλλιώς τα πηγαίνω στην Temp ή στην Input πάλι πίσω (ανάλογα)
ZAKKWYLDE Δημοσ. 24 Ιουνίου 2013 Δημοσ. 24 Ιουνίου 2013 Ok! το βρήκα! ήταν πιο εύκολο από τι νόμιζα 3 stacks input , output, temp και κάθε φορά πηγαίνω στην output αν είναι αυτό που θέλω αλλιώς τα πηγαίνω στην Temp ή στην Input πάλι πίσω (ανάλογα) Θεωρητικά και μόνο ένα Linked List θα μπορούσες να έχεις για να κάνεις τη δουλειά σου. Το θέμα είναι αν η τελική λύση είναι εφικτή με βάση τους φυσικούς περιορισμούς (το γεγονός ότι δεν μπορείς απλά να "ανοίξεις τα βαγόνια" και να βάλεις ένα στη μέση π.χ.) Οπότε απλά να είσαι σίγουρος ότι αυτό εξυπηρετεί αυτούς τους περιορισμούς...δηλαδή τις μετακινήσεις προς και απο το temp.
Rafahl_r Δημοσ. 25 Ιουνίου 2013 Μέλος Δημοσ. 25 Ιουνίου 2013 Ουσιαστικά προσομοίωση κάνω, στην αρχή σκέφτηκα και εγώ την λίστα άλλα όπως είπα υπάρχουν φυσικοί περιορισμοί! Μόνο ο τσακ νορις θα τα μετακινούσε στην πραγματικότητα με την λογική της λίστας Κάτι ακόμα, Θέλω τώρα να τα προσομοιώσω στην κονσόλα, θέλω να κάνω shift το κείμενο στην οθόνη δεξιά και όταν κάποιο βαγόνι φτάσει στα όιρα της κονσόλας να μην αναδηπληθεί γιατί χαλάει όλο το σχήμα, γνωρίζεις πως μπορεί να γίνει κάτι τέτοιο? δηλαδή απλά να κρύβεται από την οθόνη και να μην κάνει wrap.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα