Szanowni Państwo;
Na wykładzie będę kontynuował rekurencję i usuwanie rekurencji.
Propozycje zadań na ćwiczenia:
1. (Łatwe) zliczanie jedynek w reprezentacji binarnej liczby naturalnej n – rekurencja i iteracja 2. (Średnie) zadanie Gaussa o hetmanach –
patrz N.Wirth „Algorytmy + struktury danych = programy” str 163
albo Walczak & Walczak „Nauka programowania dla początkujących C++”
#include<stdio.h>
const int w=8;
const int p=15;
int a[w]; /* wiersze - */
int b[p]; /* przekatne / */
int c[p]; /* przekatne \ */
int x[w]; /* kolumny | */
void start(void);
void drukuj(void);
void probuj(int);
main() {
start();
probuj(0);
}
void start(void) {
int i;
for(i=0;i<w;i++) a[i]=1;
for(i=0;i<p;i++) b[i]=1;
for(i=0;i<p;i++) c[i]=1;
}
void drukuj(void) {
for(int i=0;i<w;i++) printf("%d ", x[i]);
printf("\n");
}
void probuj(int i) { int j;
for(j=0;j<w;j++)
if(a[j] && b[i+j] && c[i-j+w-1]) { x[i]=j;
a[j]=0; b[i+j]=0; c[i-j+w-1]=0;
if(i<w-1) probuj(i+1);
else drukuj();
a[j]=1; b[i+j]=1; c[i-j+w-1]=1;
} }
3. uogólnienie dla szachownicy ( n na n) + zliczanie liczby rozstawień...
4. (dla ambitnych - super trudne!) jak szybko wyznaczyć rozstawienie n nie atakujących się hetmanów na szachownicy (n na n) ?
Kolokwia:
Paczki z wynikami kolokwium ze studiów wieczorowych podzielę w tym tygodniu (czekałem aż otrzymam wszystkie).
Kolokwium (dla studentów dziennych) zrobimy po 6 maja.
Pierwsze zadanie będzie polegało na rekurencyjnym i iteracyjnym obliczaniu n tego wyrazu zadanego ciągu. Nad drugim myślę...Treści zadań wyślę mailem.
Życzę Państwu Miłych Świąt!
Piotr Sapiecha