Raluca1234's Blog

Enunt:

Se dau n matrici A1,A2,…,An,matricea A1 are dimensiunile d0*d1,matricea A2 are dimensiunile d1*d2…matricea Ai are dimensiunile di-1*di.

Se cere:

Sa se gaseasca o ordine de inmultire a matricelor astfel incat numarul de inmultiri sa fie minim.

Exemplu:

matrice.in                                       cout:

4                                                       ((A1*A2)*A3)*A4

2 4 5 3 2                                       (nr. minim de mutari): 82                              

                                                          0 40 70 82

                                                         1 0 60 70

                                                         2 2 0 30

                                                         3 2 3 0

Rezolvare:

#include<iostream.h>
#include<fstream.h>

#define MININF 1000000000
int c[100][100],d[101],n;
void citire()
{
 ifstream f(„matrice.in”);
 int i;
 f>>n;
 for(i=0;i<=n;i++)f>>d[i];
 f.close();
}
void dinamica()
{
 int i,j,k,min,kmin,p;
 for(i=1;i<=n;i++)c[i][i]=0;
 for(p=1;p<=n-1;p++)
  for(i=1;i<=n-p;i++)
  {
  j=i+p;
  min=MININF;
  kmin=-1;
  for(k=i;k<=j-1;k++)
      if(min>c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j])
   {
   min=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
   kmin=k;}
   c[i][j]=min;
   c[j][i]=kmin;
  }
 for(i=1;i<=n;i++)
  {for(j=1;j<=n;j++)cout<<c[i][j]<<” „;
      cout<<„\n”;}

cout<<c[1][n];
}
void afis(int i,int j)
{
 
 if(i==c[j][i])cout<<„A”<<i;
    else {cout<<„(„;
          afis(i,c[j][i]);
          cout<<„)”;}
    cout<<„*”;
 if(j==c[j][i]+1)cout<<„A”<<j;
 else {cout<<„(„;
       afis(c[j][i]+1,j);
       cout<<„)”;}
}
int main()
{
 citire();
 dinamica();
 afis(1,n);
 return 0;
}

Ne mai putem oare baza in ziua de azi pe incredere,acel sentiment care iti confera siguranta ,sau toti din jurul nostru au o mie de fete si isi schimba comportamentul de la o zi la alta?

Ma uit in jurul meu si observ cu uimire ca fiecare e numai pentru el,fiecare vrea ce-i mai bun numai pentru el(in special pentru partea fizica,nu si cea sufleteasca).

Notiunea de prieten adevarat este din ce in ce mai rara,iar lucrul cel mai dureros este ca cel care se considera a fi „prieten” este de fapt cel care vrea sa te traga in jos si sa se foloseasca pentru a putea sa se ridice.Se da prieten prntru a-ti putea intra pe sub piele si pentru a putea profita de increderea ta.

Din fericire,am reusit sa-mi dau seama cam cum stau lucrurile in acest capitol si ma pot baza la orice ora pe anumite persoane care sunt convinsa ca nu ma vor dezamagi.Cheia  nu este sa ai multi prieteni,ci sa ai putini dar adevarati. 

Dar oare cuvintele ajutor,intrajutorare,bunatate,mila,echipa nu se afla si ele in conceptul nostru despre viata?….sau exista doar ipotetic acolo intr-un colt intunecat,uitat de lume.Mai exista si alta varianta,aceea in care ele nici macar nu exista…dar refuz sa cred ca exista .

Totusi oare sa fie interesul cuvantul dupa care sa ne ghidam in viata?

Nu stiu ce cred altii dar in ceea ce ma priveste, inainte de toate trebuie sa fim oameni.Bineinteles ca in ziua de astazi trebuie sa avem si o doza de interes care sa ne mentina in societate.Dar acea doza nu trebuie sa intre in alte sfere si anume minciuna,frauda,inselaciunea si altele.Daca se ajunge la picatura care umple paharul,cei care se afla in aceasta situatie  pot pierde  multe in viata si pot ajunge incet incet la un moment dat,fara sa-si dea seama   sa clacheze ,sa nu se mai regaseasca  si sa nu mai gaseasca sprijin in nimeni.

Ar mai fi foarte multe de spus dar e altceva cand vorbesti cu cineva fata in fata si altceva cand iti prezinti punctul de vedere in cateva randuri.

Sper ca cei care au avut rabdarea sa citeasca aceste randuri sa stea putin si sa reflecteze asupra acestui subiect.

In continuare am selectat cateva citate care ma reprezinta:

  • “Deznădejdea înseamnă a nu cunoaşte motivele pentru care lupţi şi dacă într-adevăr trebuie să lupţi.” Albert Camus
  • Tot ce e bine e greu de facut. Sa mori e usor, sa pierzi e usor, sa trisezi e usor, sa fii mediocru e usor. Evita lucrurile usor de infaptuit. (Scott Alexander)
  • “Teama de esec nu trebuie sa fie un motiv de a nu încerca ceva.” (Frederick Smith)
  • E mult mai usor sa ierti un dusman, decat sa ierti un prieten. William Blake
  • Lacrima este testamentul unui îndrăgostit.Ionut Caragea
  • Inteligenta unui individ se masoara în cantitatea de incertitudini pe care e capabil sa le suporte.(Immanuel Kant)
  • Nimeni nu poate minti, nimeni nu poate ascunde ceva…atunci cand se uita direct in ochii unei persoane. (Paulo Coelho)
  • Adevaratul curaj inseamna sa faci ceva fara martori, un lucru pe care altii l-ar fi facut in fata lumii intregi.
    (François de la Rochefoucauld)
  • Lucrul important este acesta: Sa fii capabil in orice moment sa sacrifici tot ce ai pentru ce ai putea sa devii.(Charles Dubois)
  • Dragostea nu pune multe intrebari, deoarece, daca incepem sa gandim, incepe sa ne fie frica E o frica inexplicabila, nu poate fi exprimata prin cuvinte. De aceea nu intrebi, faci. – Paulo Coelho

Cei mai buni prieteni ai omului, câinii, sunt inteligenţi. Unii mai inteligenţi decât alţii, dacă îi evaluăm după rasă.

Aceştia sunt câinii care se dresează cel mai uşor, care sunt cei mai ascultători şi mai deştepţi. Ei pot fi dresaţi şi pot dobândi “cei 7 ani de-acasă”, cum s-ar spune, în doar 20 de zile.

 Sunt folosiţi în cadrul poliţiei, pentru căutarea drogurilor, prinderea infractorilor, sunt de mare ajutor nevăzătorilor, persoanelor cu handicap, bătrânilor şi copiilor.

  1. Border Collie – Inteligenţa lui ieşită din comun îl clasează cu siguranţă pe primul loc. Şi, după cum spune vorba &ldquo;aşa stăpân, aşa câine&rdquo;, el se simt cel mai bine alături de oameni activi, care să-l solicite şi să-l antreneze toată ziua.
  2. Ciobănesc german – Folosit în misiuni de salvare, la pază, în poliţie, acestui câine nu trebuie să-i spui niciodată de două ori ce trebuie să facă. Învaţă comenzile după numai câteva repetiţii, fiind antrenat chiar şi pentru salturile cu paraşuta.
  3. Pudel – Este un câine creativ pe care poate l-aţi văzut inclusiv la spectacolele de circ. Este ascultător, rezistent şi eficient.
  4. Labrador Retriever – Este folosit în munca de teren a poliţiştilor, dar şi de către nevăzători şi de persoanele cu handicap. În acelaşi timp, e blând şi afectuos, ideal pentru familiile cu copii.
  5. Golden Retriever – Loial, atent, iubitor, această rasă de câine este indicată copiilor. Poate învăţa foarte bine peste 200 de comenzi.
  6. Doberman Pinscher – Graţios, curajos, acest câine nu ştie ce înseamnă frica, fiind folosit la pază. Chiar dacă pare fioros, dresat ca atare, devine docil şi blând.
  7. Ciobănesc de Shetland – Este devotat stăpânului şi are un spirit protector. Dacă în trecut era folosit la apărarea turmelor, acum şi-ar da viaţa pentru stăpânul său.
  8. Papillon – Drăgălaş datorită urechilor în formă de fluture, acest câine este mai puternic decât pare la prima vedere. E paznic de încredere al casei şi bun prieten.
  9. Rottweiler – Curajos, răbdător şi fidel, rottweilerul este în momentul de faţă ajutor de nădejde în poliţie. Orice persoană ar fi mândră să aibă alături un astfel de patruped.
  10. Câinele de cireadă australian – Este agil, puternic, organizat, loial faţă de stăpân, activ fizic şi mental. Poate chiar prea activ pentru că se plictiseşte repede şi, în dorinţa lui de a experimenta, mai face câte o prostioară.

Fructe delicioase dar şi sănătoase. Cam aceasta ar fi definiţia merelor. Nutriţioniştii susţin că zicala „Un măr pe zi ţine doctorul la distanţă” este perfect adevarată. De ce? Iată doar 5 dintre motive:

  1. Scad colesterolul. Merele sunt o sursă bogată in fibre, atât solubile cât şi insolubile. Specialiştii spun că fibrele contribuie la scăderea nivelului de colesterol din sânge şi a riscul depunerii acestuia pe artere. Astfel, o dietă bogată in mere ajută la prevenirea atacurile de inimă.
  2. Previn afecţiunile cardiovasculare. Studiile au descoperit că flavonoizii ajută la prevenirea afecţiunilor cardiovasculare, iar merele şi ceapa fac parte dintre cele mai bune surse. Potrivit cercetătorilor de la Universitatea din California, daca în dieta zilnică, adaugi mere, ceapă şi ceai verde, vei reuşi să reduci riscul unui atac de inima cu 32%.
  3. Previn formarea pietrelor la rinichi. Sucul de mere reduce riscul acumulării calciului şi astfel şi al formării pietrelor la rinichi.
  4. Luptă împotriva cancerului. Potrivit cercetătorilor, nutrienţii conţinuţi de mere încetinesc dezvoltarea tumorilor. Aceştia susţin că efectele sunt mai mari în cazul în care este consumat fructul întreg.
  5. Ajută la slăbit. Sunt foarte săţioase şi te ajută să mănânci mai puţin. Cercetătorii susţin că femeile care consuma 3 mere zilnic, reuşesc să slăbească mai uşor, cu până la 40% mai mult faţă de cele care nu au acest obicei alimentar.

Enunt:Se dau n piese de domino.Fiecare piesa poate fi rotita cu 180 de grade.Sa se determine subsiruri de piese de lungime maxima astfel incat oricare doua piese alaturate sa aiba un numar in comun.

Exemplu:

domino.in                                                          cout:

5 6                                                                      6 5
1 1                                                                       5 2
2 5                                                                      2 3
3 2                                                                     3 5
1 5                                                                      5 5
6 4                                                                     5 2
5 1
5 3
2 1
1 4
5 5
5 2
3 3

Algoritm:

#include<iostream.h>
#include<fstream.h>
typedef struct{int first,sec;}PIESA;
PIESA v[100];
int d[2][100],poz[2][100],n;
void citire()
{
 n=0;
 ifstream f(„domino.in”);
 while(!f.eof())f>>v[++n].first>>v[n].sec;
 f.close();
}
void dinamica()
{
 int i,j,max1,max0,p0,p1;
 d[0][n]=d[1][n]=0;
 poz[0][n]=poz[1][n]=0;
 for(i=n-1;i>=1;i–)
              {max0=max1=0;
        p0=p1=0;
        for(j=i+1;j<=n;j++)
                    {if(v[i].sec==v[j].first && d[0][j]>max0){max0=d[0][j];
                       p0=j;}
             if(v[i].sec==v[j].sec && d[1][j]>max0){max0=d[1][j];
            p0=j;}
      if(v[i].first==v[j].sec && d[1][j]>max1){max1=d[1][j];
                                            p1=j;
      if(v[i].first==v[j].first && d[0][j]>max1){max1=d[0][j];
                                              p1=j;}
      }
  d[0][i]=max0+1;
  d[1][i]=m
  poz[0][i]=p0;
  poz[1][i]=p1;}
}
void afisare()
{
 int k,p,aux,i,max=0;
 for(i=1;i<=n;i++){if(d[0][i]>max){max=d[0][i];k=0;p=i;}
                   if(d[1][i]>max){max=d[1][i];k=1;p=i;}
                  }
 if(k==0){cout<<v[p].first<<” „<<v[p].sec<<„\n”;aux=v[p].sec;}
 else {cout<<v[p].sec<<” „<<v[p].first<<„\n”;aux=v[p].first;}
 p=poz[k][p];
 while(p>0){if(aux==v[p].first){cout<<v[p].first<<” „<<v[p].sec<<„\n”;
                                k=0;aux=v[p].sec;}
            else {cout<<v[p].sec<<” „<<v[p].first<<„\n”;
     k=1;aux=v[p].first;}
     p=poz[k][p];}
}
int main()
{
 int k,p,i,max=0;
 citire();
 dinamica();
 for(i=1;i<=n;i++){if(d[0][i]>max){max=d[0][i];k=0;p=i;}
                   if(d[1][i]>max)max=d[1][i];k=1;p=i;}
 cout<<max<<„\n”;
 afisare();
 return 0;
}

Enunt: Se dau x si y doua siruri cu m respectiv n numere. Se cere sa se determine cel mai lung subsir comun celor doua siruri.

Exemplu:

nr.in                                                               cout:

 8                                                                      4
10 4 20 10 40 2 0 60                                4   10    2    0
9
4 90 7 10 70 2 71 81 0

Algoritm:

#include<iostream.h>
#include<fstream.h>
int x[100],y[100],m,n,a[15][15];
void citire(int v[],int n)
{
 int i;
 ifstream f(„nr.in”);
 f>>n;
 for(i=1;i<=n;i++)f>>v[i];
 f.close();
}
int maxim(int x,int y)
{
 if(x>y)return x;
 return y;
}
void dinamica()
{
 int i,j;
 for(i=0;i<=m;i++)a[0][i]=0;
 for(i=1;i<=n;i++)a[i][0]=0;
 for(i=1;i<=m;i++)
              for(j=1;j<=n;j++)
                     if(x[i]==y[j])a[i][j]=a[i-1][j-1]+1;
              else a[i][j]=maxim(a[i-1][j],a[i][j-1]);
 cout<<„lungimea maxima este”<<a[m][n]<<„\n”;
}
void afis(int i,int j)
{
 int v[100],k;
 k=0;
 while(i>0 && j>0)if(x[i]==y[j]){v[++k]=x[i];
                                   i–;j–;}
                   else {if(a[i][j]==a[i-1][j])i–;
            else j–;}
 for(i=k;i>=1;i–)cout<<v[i]<<” „;
}
int main()
{
 citire(x,m);
 citire(y,n);
 dinamica();
 afis(m,n);
 return 0;
}

Calendar

Iulie 2017
L M M M V S D
« Noi    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Arhive