2008-08-27 8 views

Antwort

5

Problem: Insert + oder - Zeichen an beliebiger Stelle zwischen den Ziffern 123456789 derart, dass der Ausdruck auf 100 wertet die Bedingung ist, dass die Reihenfolge der Ziffern darf nicht verändert werden.

z.B .: 1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100

Programmierungsproblem: ein Programm in der Sprache übersetzt schreiben, die alle möglichen Lösungen des obigen Problems gibt.

0

Towers of Hannoi ist ideal für die Rekursionspraxis.

Ich würde auch eine Suche nach Beispielprogramm Interviewfragen.

2

Es gibt einige gute Beispiele für einfache Programmierfragen in Steve Yegges Artikel Five Essential Phone Screen Questions (unter Area Number One: Coding). Ich finde, dass diese ziemlich gut für Stift und Papier sind. Auch die Fragen unter OOP Design im selben Artikel können auf Stift und Papier (oder sogar in Ihrem Kopf) gemacht werden und sind, denke ich, gute Übungen zu machen.

0

Einige Online-Websites für wettbewerbsfähige Programmierung sind voll von Beispielfragen/Herausforderungen, sortiert nach "Schwierigkeit". Sehr oft würden die einfacheren Kategorien in den "Algorithmen" -Fragen Ihnen passen, denke ich.

Zum Beispiel, überprüfen Sie TopCoder (Algorithmen Abschnitt)! Neben

davon 2 Proben:

  1. Sie sind eine Liste von N Punkten in der Ebene, die durch ihre Koordinaten (x_i, y_i) gegeben, und eine Reihe R> 0 ist. Gib die maximale Anzahl der N gegebenen Punkte aus, die gleichzeitig von einer Scheibe mit dem Radius R abgedeckt werden können (für Bonuspunkte: Komplexität?).

  2. Sie sind eine Reihe von N Zahlen a1 bis aN gegeben, und Sie wollen a1 * a2 * ... * aN/ai für alle Werte von i zu berechnen (so ist der Ausgang wieder ein Array von N Elementen) ohne Teilung mit. Stellen Sie eine (nicht naive) Methode zur Verfügung (Komplexität sollte in O (N) Multiplikationen sein).

0

Ich mag auch Project Euler, aber ich möchte darauf hinweisen, dass die Fragen sehr schnell wirklich knifflig. Nach den ersten 20 Fragen oder so, beginnen sie, Probleme zu sein, die die meisten Menschen nicht in der Lage sind, in einer halben Stunde herauszufinden. Ein anderes Problem ist, dass viele von ihnen sich mit Mathe mit wirklich großen Zahlen beschäftigen, die nicht in Standard-Integer- oder sogar Long-Variablentypen passen.

4

Wenn Sie einen Stift und Papper Art von Übungen möchten, würde ich mehr Design als Codierung empfehlen.

Eigentlich Codierung in Papier saugt und es lässt Sie fast nichts lernen.Die Arbeitsumgebung spielt eine Rolle, indem man einen Computer eintippt, kompiliert, sieht, welche Fehler man gemacht hat, Refactor hier und da verwenden, einfach nicht vergleichen mit dem, was man auf einem Stück Papier tun kann und so, was man auf einem tun kann Stück Papier, während eine interessante mentale Übung ist nicht praktikabel, wird es nicht verbessern Ihre Programmierkenntnisse so sehr.

Auf der anderen Seite können Sie die Architektur einer mittleren oder sogar komplexen Anwendung von Hand in einem Papier entwerfen. Tatsächlich tue ich normalerweise. Engineering-Tools (wie Enterprise Architect) sind nicht gut genug, um die guten Hand-zu-Hand-Diagramme zu ersetzen.

Gute Projekte könnten sein, wie würdest du eine Game Engine entwickeln? Klassen, Threads, Speicher, Physik, die Datenstrukturen, die alles enthalten und so weiter. Wie würden Sie eine Suchmaschine starten? Wie würden Sie ein Mustererkennungssystem entwerfen?

Ich finde diese Art von Problemen viel lohnender, dass jede Papiercodierung Sie tun können.

Verwandte Themen