Orar semigroup #2

Orar semigroup #2

Laborator 5 - Probleme recursivitate (30 octombrie)

3.4.Să se scrie un program recursiv care citeşte n cuvinte şi le afişează în ordinea inversă a introducerii lor. 

#include <stdio.h>
#include <stdlib.h>

void citire_afisare(int n)
{
    int i;
    char a[10];
    if(n>=1)
{
    scanf("%s",&a);
    citire_afisare(n-1);
}
if(n)
    printf("%s\n",a);

}

int main()
{
    int n;
    printf("Cititi numarul de cuvinte: ");
    scanf("%d",&n);
    citire_afisare(n);
    getch();
}
 
3.5.Să se scrie un program recursiv de generare a produsului cartezian a n mulţimi.
#include<stdio.h>  //  CU ŞIRURI DE CARACTERE

int n,nr=0;
char a[10][10],x[10];

void backt(int i)
{
    int j;
    for(j=0;j<strlen(a[i]);j++)
    {
        x[i]=a[i][j];
        if(i==n)
        {
            printf("%s \n",x+1);
            nr++;
        }
        else
            backt(i+1);
    }
}

int main()
{
    int i;
    scanf("%d",&n);
    for(i=0;i<=n;i++)
    {
        gets(a[i]);
    }

    x[n+1]='\0';
    backt(1);
    printf("%d solutii",nr);
    getch();
    return 0;
}

3.6.Să se scrie un program de generare recursivă a submulţimilor de k elemente ale mulţimii A cu n elemente (combinaţiile de n elemente luate câte k). 

3.7. Să se scrie un program de rezolvare a problemei celor 8 regine (determinarea tuturor aşezărilor pe tabla de şah a celor 8 regine astfel încât să nu se atace). 

3.8.Să se genereze recursiv permutările mulţimii A de n elemente. 

3.9.Se consideră o bară de lungime m şi n repere de lungimi l1, l2, .... , ln. Din bară trebuie tăiate bucăţi de lungimea reperelor date, astfel încât să rezulte din fiecare reper cel puţin o bucată şi pierderile să fie minime. 

3.10. Funcţia lui Ackermann. Să se scrie programul recursiv care calculează funcţia lui Ackermann definită astfel: 
Ack(0,n)=n+1 pentru n ε N 
Ack(m,0)=Ack(m-1,1) pentru m ε N* 
Ack(m,n)=Ack(m-1,Ack(m,n-1)) pentru m,n ε N

marți, 5 noiembrie 2013 by DlMuresan
Categories: , , , , , , , , , , , | Leave a comment

Leave a Reply