Αλγόριθμος: Καθορίστε σχήμα των δύο τομέων που οριοθετείται από ένα αυθαίρετο διαδρομή, και στη συνέχεια συμπληρώστε μία

ψήφοι
2

ΣΗΜΕΙΩΣΗ: Αυτό είναι ένα δύσκολο πρόβλημα για κάποιον που του αρέσει προβλήματα λογικής, κ.λπ.

Σκεφτείτε ένα ορθογώνιο πλέγμα δύο διαστάσεων ύψους Η και πλάτος W. Κάθε χώρος για το δίκτυο έχει μια τιμή, είτε 0 1ή 2. Αρχικά, σε κάθε χώρο στο grid είναι 0, εκτός από τους χώρους κατά μήκος κάθε μία από τις τέσσερις άκρες, οι οποίες είναι αρχικά 2.

Τότε θα εξετάσουμε ένα αυθαίρετο διαδρομή των γειτονικών (οριζοντίως ή καθέτως) Χώροι πλέγμα. Η διαδρομή αρχίζει μια 2και καταλήγει σε μια διαφορετική 2. Κάθε χώρος κατά μήκος της διαδρομής είναι 1.

Ο δρόμος χωρίζει το δίκτυο σε δύο «τομείς» των 0χώρων. Υπάρχει ένα αντικείμενο που στηρίζεται σε ένα απροσδιόριστο 0διάστημα. Ο «τομέας» που δεν περιέχει το αντικείμενο πρέπει να είναι γεμάτοι με 2.

Καθορίστε έναν αλγόριθμο που καθορίζει τους χώρους που πρέπει να γίνουν 2από 0, δίνεται ένας πίνακας (κατάλογος) των τιμών ( 0, 1, ή 2) που αντιστοιχούν στις τιμές στο πλέγμα, που πηγαίνει από πάνω προς τα κάτω και στη συνέχεια από αριστερά προς τα δεξιά. Με άλλα λόγια, το στοιχείο στο ευρετήριο 0 στη συστοιχία περιέχει την τιμή του άνω-αριστερή χώρο στο πλέγμα (αρχικά α 2). Το στοιχείο σε ευρετήριο 1 περιέχει την τιμή του χώρου στο πλέγμα που είναι στην αριστερή στήλη, δεύτερη από την κορυφή, και ούτω καθεξής. Το στοιχείο στο ευρετήριο H περιέχει την τιμή του χώρου στο πλέγμα που βρίσκεται στην πάνω σειρά, αλλά το δεύτερο από τα αριστερά, και ούτω καθεξής.

Μόλις ολοκληρωθεί η αλγόριθμο και το κενό «τομέα» συμπληρώνεται πλήρως με 2s, ο ίδιος αλγόριθμος πρέπει να είναι επαρκής για να κάνει και πάλι την ίδια διαδικασία. Η δεύτερη (και για) το χρόνο, ο δρόμος εξακολουθεί να προέρχεται από ένα 2σε ένα διαφορετικό 2, πέρα από τους χώρους της 0, αλλά το «πλέγμα» είναι μικρότερη επειδή το 2s που περιβάλλεται από άλλα 2δεν μπορεί να αγγιχτεί από το μονοπάτι (αφού η διαδρομή είναι μαζί χώρους 0).

Ευχαριστώ όποιον είναι σε θέση να καταλάβω αυτό έξω για μένα, πολύ πολύ πολύ. Αυτό δεν πρέπει να είναι σε μια συγκεκριμένη γλώσσα προγραμματισμού? Στην πραγματικότητα, ψευδο-κώδικα ή απλά αγγλικά είναι επαρκής. Ευχαριστώ και πάλι! Αν έχετε οποιεσδήποτε απορίες, απλά αφήστε ένα σχόλιο και θα προσδιορίζει τι πρέπει να προσδιορίζονται.

Δημοσιεύθηκε 15/05/2010 στις 22:07
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
3

Μου φαίνεται ένα βασικό πλήρωσης των πλημμυρών αλγόριθμος θα ολοκληρώσω το έργο μου:

  • Σάρωση σειρά σας για την πρώτη 0σας βρει, και στη συνέχεια, ξεκινήστε ένα γέμισμα πλημμύρα από εκεί, γεμίζοντας την 0περιοχή με κάποιο άλλο αριθμό, ας πούμε 3- αυτό θα ονομάσει ένα από τα «τομείς» σας.
  • Μόλις γίνει αυτό, σαρώνει και πάλι για μια 0, και πλημμύρα γεμίσει από εκεί, γεμίζοντας με 4αυτό το διάστημα.
  • Κατά τη διάρκεια και των δύο γεμίσματα, μπορείτε να ελέγξει αν βρήκατε το αντικείμενο σας ή όχι? όποιο από τα δύο συμπληρώσετε μπορείτε να το βρείτε κατά τη διάρκεια, να παρακολουθείτε τον αριθμό αυτό.
  • Μετά τα δύο γεμίσματα γίνει, ελέγξτε ποια αριθμημένη περιοχή είχε ως αντικείμενο σε αυτό - πλημμύρες συμπληρώσετε αυτή την περιοχή και πάλι, πίσω με 0αυτό το διάστημα.
  • Πλημμύρες γεμίσει το άλλο αριθμημένα περιοχή με 2, και είστε έτοιμοι.

Αυτό θα λειτουργήσει για οποιαδήποτε διαμόρφωση του δικτύου, εφ 'όσον υπάρχουν ακριβώς δύο 0τομείς που έχουν αποσυνδεθεί από το άλλο? έτσι εκ νέου εφαρμογή τον ίδιο αλγόριθμο όσες φορές είναι μια χαρά.

Επεξεργασία: Μικρά τσιμπήματα, για να σας γλιτώσει από τις πλημμύρες-γέμισμα ή δύο -

  • Εάν δεν μπορείτε να βρείτε το αντικείμενο σας στην πρώτη από τις πλημμύρες-γέμισμα, μπορείτε να υποθέσετε ότι ο άλλος τομέας που έχει, έτσι απλά εκ νέου συμπληρώστε τον τρέχοντα αριθμό με το 2και αφήστε το άλλο τομέα και μόνο (αφού είναι ήδη 0γεμισμένο).
  • Εναλλακτικά, αν το κάνετε βρείτε το αντικείμενο στο πρώτο πλημμύρες γέμισμα, μπορείτε να συμπληρώσετε άμεσα τον άλλο τομέα με 2, και στη συνέχεια εκ νέου συμπληρώστε τον πρώτο τομέα με 0.
Απαντήθηκε 15/05/2010 στις 22:23
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more