35-Minuten-Mini
Vier neue Varianten: Schleifen, Liste/Pointer, lineare Rekurrenz und ein kleiner Heap-Trace.
Noch nicht gestartet.
Wähle eine Runde, lege Papier bereit und starte erst dann den Timer. Antworten werden lokal gespeichert. Nach Abgabe oder Zeitablauf erscheinen Musterwege, Trainingspunkte und Reparaturfelder.
Saubere Einordnung: Beide Sets sind von uns konstruierte Transferaufgaben aus lokalen Kursmustern. Nur 90 Minuten, 80 Punkte und keine Hilfsmittel sind als realer Prüfungsrahmen belegt. Aufgabenmix und Trainingspunkte sind nicht offiziell.
Vier neue Varianten: Schleifen, Liste/Pointer, lineare Rekurrenz und ein kleiner Heap-Trace.
Noch nicht gestartet.
Sechs Blöcke über Code/Laufzeit, Mini-Code, Sortieren/Heap, Bäume, 2-3-4/Hashing und Greedy.
Noch nicht gestartet.
Lege Papier und Stift bereit. Der Startknopf zeigt das Set und setzt gleichzeitig die nicht pausierbare Uhr in Gang.
int countPairs(int a[], int n) {
int c = 0;
for (int i = 0; i < n; ++i) {
if (a[i] < 0) return c;
for (int j = i + 1; j < n; ++j)
if (a[i] < a[j]) ++c;
}
return c;
}
c?i<j mit a[i]<a[j] bis zum ersten negativen Element. (3 P)a[0]<0; sofortiger Rücksprung, Θ(1). (3 P)(n−1)+…+1=n(n−1)/2, Θ(n²). (4 P)int evenSum(Node* p) {
int s = 0;
while (p != nullptr) {
if (p->value % 2 == 0) s += p->value;
p = p->next;
}
return s;
}
Gegeben ist head → 5 → −2 → 7 → 4 → nullptr.
p und s nach jedem Knoten.p=p->next besucht jeden der vier Knoten genau einmal. (2 P)int h(int n) {
if (n <= 1) return 1;
return n + h(n - 1);
}
h(4).h(4)=4+3+2+1=10. (2 P)T(1)=c₀, T(n)=T(n−1)+c. (3 P)c₀+(n−1)c; damit Θ(n). Funktionswert und Laufzeit nicht verwechseln. (4 P)Arraydarstellung des Min-Heaps: [2, 5, 4, 11, 8, 7, 9].
[9,5,4,11,8,7]; mit kleinerem Kind 4 tauschen: [4,5,9,11,8,7]; dann mit 7: [4,5,7,11,8,9]. (4 P)bool hasDuplicate(int a[], int n) {
for (int i = 0; i < n; ++i)
for (int j = i + 1; j < n; ++j)
if (a[i] == a[j]) return true;
return false;
}
a[0]==a[1]; ein Vergleich, Θ(1). (5 P)(n−1)+…+1=n(n−1)/2, Θ(n²). (6 P)struct Stack {
int* data;
int capacity;
int size; // Anzahl gespeicherter Werte
};
bool push(Stack& s, int value) { /* ergänzen */ }
bool pop(Stack& s, int& out) { /* ergänzen */ }
Implementiere beide Funktionen. Bei voll/leer soll false zurückkommen, sonst true. out erhält den entfernten Wert.
bool push(Stack& s, int value) {
if (s.size == s.capacity) return false;
s.data[s.size++] = value;
return true;
}
bool pop(Stack& s, int& out) {
if (s.size == 0) return false;
out = s.data[--s.size];
return true;
}[5,2,4,1,3]: Notiere die Arrays nach den ersten zwei äußeren Runden sowie die Gesamtzahl der Vergleiche.[1,4,3,9,7,8,5]: führe einmal delete-min mit allen Zuständen aus und nenne Best/Worst.[1,2,4,5,3]; nach Runde 2 unverändert [1,2,4,5,3]. (4 P)[5,4,3,9,7,8] → mit 3 tauschen → [3,4,5,9,7,8]. (4 P)delete-min: Best Θ(1), Worst Θ(log n) über einen Wurzel-Blatt-Pfad. (2 P)Füge in einen leeren BST ein: 8, 3, 10, 1, 6, 14, 4, 7, 13.
nullptr-Basisfall. Laufzeit?if(n==nullptr)return; inorder(n->left); visit(n); inorder(n->right); (5 P)[10|20|30]. Zeige den Split und nenne zwei Invarianten.h(x)=x%7; belegt: Index 0→14, 2→9, 3→17. Füge 16 mit linearem Sondieren +1,+2,… ein. Besuchsfolge, Zielindex, Sondierungszahl (Start zählt nicht)?[10] und [30]. (5 P)16%7=2: 2 belegt → 3 belegt → 4 frei; Ziel 4, zwei Sondierungen. (5 P)Münzen {1,3,4}, Zielsumme 6. Greedy nimmt immer die größte noch passende Münze.
Vergib pro Aufgabe nur die Punkte aus der sichtbaren Rubrik und markiere Fehlerarten. Das Ergebnis ist ein interner Trainingsscore — keine Prognose für die echte Klausur.
Noch keine Selbstpunkte eingetragen.
Löse jeweils einen veränderten Fall ohne Musterweg und hake erst danach ab.