Algorytmy 16.III.2012, Laborki, ASD
[ Pobierz całość w formacie PDF ]
Ciag Fibonacciego rekurencyjnie#include <cstdlib>#include <iostream>#include <math.h>using namespace std;int fib(int n);int main(int argc, char *argv[]){int n;cout<<"Podaj n-ty wyraz ciagu ";cin>>n;cout<<n<<"-ty wyraz ciagu wynosi "<<fib(n);cout<<endl<<endl;system("PAUSE");return EXIT_SUCCESS;}int fib(int n){if (n==0) return 1;if (n==1) return 1;return(fib(n-1)+fib(n-2));}Wypisac wszystkie ciagizero jedynkowe o dlugosci n.#include <cstdlib>#include <iostream>#include <math.h>#define M 8#define N 3using namespace std;typedef int tab[M][N];void binary(int m, int n, tab t);int main(int argc, char *argv[]){int t[M][N];binary (M, N, t);for (int i=0; i<M;i++){for (int j=0;j<N;j++) cout <<t[i][j];cout<<endl;}cout<<endl<<endl;system("PAUSE");return EXIT_SUCCESS;}void binary(int m, int n, tab t){if(n==1){t[0][0]=0;t[1][0]=1;}else{binary(m/2,n-1,t);for(int i=m/2;i<m;i++)for(int j=0;j<n-1;j++)t[i][j]=t[i-m/2][j];for (int i=0;i<m/2;i++)t[i][n-1]=0;for(int i=m/2;i<m;i++)t[i][n-1]=1;}}Zaimplementowac algorytm planujacy turniej dla 2n zawodnikow#include <cstdlib>#include <iostream>#define N 6#define M 6using namespace std;typedef int tab[M][N];void match(int m, tab t);int main(int argc, char *argv[]){int t[M][N];match(M,t);for (int i=0;i<M;i++){for (int j=0;j<N;j++)cout<<t[i][j];cout<<endl;}cout<<endl<<endl;system("PAUSE");return EXIT_SUCCESS;}void match(int m,tab t){if (m==1){t[0][0]=0;}else{match(m/2,t);for (int i=m/2;i<m;i++)for (int j=0;j<m/2;j++)t[i][j]=t[i-m/2][j]+m/2;for (int i=0;i<m/2;i++)for (int j=m/2;j<m;j++)t[i][j]=t[i][j-m/2]+m/2;for (int i=m/2;i<m;i++)for (int j=m/2;j<m;j++)t[i][j]=t[i-m/2][j-m/2];}}Dla danej liczby napisac rekurencyjna wersje algorytmu wyznaczania cyfr tej liczby#include <cstdlib>#include <iostream>using namespace std;void cyfry(int n);int main(int argc, char *argv[]){int n;cout<<"Podaj liczbe ";cin >> n;cyfry(n);cout<<endl<<endl;system("PAUSE");return EXIT_SUCCESS;}void cyfry(int n){int nowa = n/10;if (nowa)cyfry(nowa);cout<<n%10<<endl;}Napisac program znajdujacy rozwiazanie problemu Wie?e Hanoi#include <cstdlib>#include <iostream>using namespace std;void hanoi(int n, char A, char B, char C){// przek?ada n kr??k?w z A korzystaj?c z B na Cif (n > 0){hanoi(n-1, A, C, B);cout << A << " -> " << C << endl;hanoi(n-1, B, A, C);}}int main(int argc, char *argv[]){int n;cout<<"Ile krazkow "; cin >> n;hanoi(n, 'A', 'B', 'C');cout<<endl<<endl;system("PAUSE");return EXIT_SUCCESS;}6. Napisz rekurencyjny algorytm znajdowania najwiekszej i najmniejszej liczby z danegociagu.#include <cstdlib>#include <iostream>#define N 6#define M 6using namespace std;typedef int tab[M][N];struct wynik{int ma;int mi;};wynik MaxMin( int t[], int i, int j);int main(int argc, char *argv[]){wynik w;int t[6]={1,7,3,4,0,6};w=MaxMin(t,0,5);cout<<endl;cout<<w.mi<<" "<<w.ma<<endl;cout<<endl<<endl;system("PAUSE");return EXIT_SUCCESS;}wynik MaxMin(int t[], int i, int j){wynik tmp, tmp1, tmp2;if (i==j){tmp.ma=t[i];tmp.mi=t[i];return tmp;}if (i+1==j){if (t[i]>t[j]){tmp.ma=t[i];tmp.mi=t[j];}else{tmp.ma=t[j];tmp.mi=t[i];}return tmp;}tmp1=MaxMin(t,i,(i+j)/2);tmp2=MaxMin(t,(i+j)/2,j);if (tmp1.mi<tmp2.mi)tmp.mi=tmp1.mi;elsetmp.mi=tmp2.mi;if (tmp1.ma>tmp2.ma)tmp.ma=tmp1.ma;elsetmp.ma=tmp2.ma;return tmp;}
[ Pobierz całość w formacie PDF ]