1. Einführung
Der Autor stieß im Algorithmus -Wettbewerb an der Universität auf eine solche Frage. Jetzt werde ich es mit Ihnen teilen: Es gibt acht Silbermünzen abcdefgh, und einer von ihnen ist bekannt als eine gefälschte Währung, die sich von der tatsächlichen Währung unterscheidet, aber ich weiß nicht, ob es leichter oder schwerer ist. So verwenden Sie den Saldo, um zu entscheiden, welche Münze eine gefälschte Währung mit der Mindestanzahl von Vergleiche ist, und ich weiß auch, dass die gefälschte Währung leichter oder schwerer ist als die reale Währung.
2. Analyse
Wenn diese Frage nur darum geht, welche gefälschte Währung sehr einfach ist, ist das Problem nicht sehr kompliziert und Sie müssen nur zurückgehen und wiederholen, um das Ergebnis zu erzielen. Wir müssen die geringsten Schritte anwenden, um mit den Schwierigkeiten des Problems umzugehen! ! !
Im Vergleich zu den vorherigen Datenstrukturproblemen gibt es Rekursion und Rückverfolgung. Heute müssen wir mit einem neuen Konzept namens Baum in Kontakt kommen. Wie der Name schon sagt, bedeutet die Zahlenstruktur, dass unser Analysediagramm wie ein Baum mit verschiedenen Informationen wie Zweigknoten entspricht. Die Baumstruktur ist ein größeres Kapitel in der Datenstruktur, nicht in unserer Diskussion. In dieser Frage werden wir ein kleines Molekül des Baumes, den Entscheidungsbaum, vorstellen.
Erstellen wir zuerst ein mathematisches Modell zur Lösung von acht Silbermünzen. Eine einfache Situation ist so. Wir nennen die Silbermünzen abcdefg usw. Im Gegenzug vergleichen wir A+B+C und D+E+F. Wenn es gleich ist, muss die gefälschte Währung g oder h sein. Wir vergleichen zuerst, welches schwerer ist, G oder h. Wenn g schwerer ist, vergleichen Sie mit a (a ist die wahre Währung). Wenn G gleich A ist, ist G die wahre Währung, dann ist H die gefälschte Währung. Da H leichter als G und G die wahre Währung ist, ist das Gewicht der gefälschten Währung leichter als die reale Währung.
Was ist, wenn es nicht gleich ist? Was ist der Fall? Wir werden die Zweige nacheinander vergleichen, bis wir die endgültige Antwort erhalten!
3. Probendiagramm
Basierend auf der obigen Analyse können wir ein vollständiges Entscheidungsbaumdiagramm haben:
4. Code
öffentliche Klassenmünzen {private int [] Münzen; public musins () {coins = new int [8]; für (int i = 0; i <8; i ++) Münzen [i] = 10; } public void setFake (int Gewicht) {Coins [(int) (math.random () * 7)] = Gewicht; } public void fake () {if (Münzen [0]+Münzen [1]+Münzen [2] == Münzen [3]+Münzen [4]+Münzen [5]) {if (Münzen [6]> Münzen [7]) vergleichen (6, 7, 0); sonst vergleichen (7, 6, 0); } else if (Münzen [0]+Münzen [1]+Münzen [2]> Münzen [3]+Münzen [4]+Münzen [5]) {if (Münzen [0]+Münzen [3] == Münzen [1]+Münzen [4]) vergleichen (2, 5, 0); sonst wenn (Münzen [0]+Münzen [3]> Münzen [1]+Münzen [4]) vergleiche (0, 4, 1); if (Münzen [0]+Münzen [3] <Münzen [1]+Münzen [4]) vergleiche (1, 3, 0); } else if (Münzen [0]+Münzen [1]+Münzen [2] <Münzen [3]+Münzen [4]+Münzen [5]) {if (Münzen [0]+Münzen [3] == Münzen [1]+Münzen [4]) vergleichen (5, 2, 0); sonst wenn (Münzen [0]+Münzen [3]> Münzen [1]+Münzen [4]) vergleiche (3, 1, 0); if (Münzen [0]+Münzen [3] <Münzen [1]+Münzen [4]) vergleiche (4, 0, 1); }} Protected void Compare (int i, int j, int k) {if (Münzen [i]> Münzen [k]) System.out.print ("/nFake -Münzen" + (i + 1) + "schwerer"); else system.out.print ("/n gefälschte Währung" + (j + 1) + "leichter"); } public static void main (String [] args) {if (argsgth == 0) {System.out.println ("Eingabe gefälschter Währungsgewicht (größer oder kleiner als 10)"); System.out.println ("Ex. Java Coins 5"); zurückkehren; } Münzen achtcoins = neue Münzen (); achtcoins.setFake (Integer.ParseInt (args [0])); achtcoins.fake (); }}Ergebnis:
Geben Sie das gefälschte Währungsgewicht ein (größer oder kleiner als 10)
ex. Java -Münzen 5
Hier ist eine allgemeine Methode zur Problemlösung. Sie können den Code sorgfältig in Betracht ziehen. Für diesen Code reicht die obige Analyse aus. Jeder muss darüber nachdenken und den Rest alleine lernen, damit er ihn tief verstehen kann.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Lösung der acht Silbermünzencodes für die Implementierung von Java -Programmierungen. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!