Sunteți pe pagina 1din 6

Probleme C++

C++

Pagini

Probleme c++
Tema acasa/Nelamuriri
Tutoriale

miercuri, 19 martie 2014


Maximul dintr-un sir: Divide et Impera
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,a[1000],x,i;
int div_imp(int p,int q)
{
int mij,max1,max2;
if(q==p)
return a[q];
else
{
mij=(p+q)/2;
max1=div_imp(p,mij);
max2=div_imp(mij+1,q);
if(max1>max2)
return max1;
else
return max2;
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
g<<div_imp(1,n);
return 0;
}
Publicat de Cipi Morosanu la 21:14
Trimitei prin e-mail Postai pe blog!Distribuii pe TwitterDistribuii pe FacebookTrimitei ctre Pinterest

Cautare binara
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,a[1000],x,i;
int div_imp(int p,int q)
{
int mij;
if(q<p)
return 0;

else
{
mij=(p+q)/2;
if(a[mij]==x)
return 1;
else
{if(x>a[mij])
div_imp(mij+1,q);
else
div_imp(p,mij-1);
}
}
}
int main()
{
f>>x;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
if(div_imp(1,n)==1)
g<<"x este in sir";
else
g<<"x NU este in sir";
return 0;
}
Publicat de Cipi Morosanu la 21:03
Trimitei prin e-mail Postai pe blog!Distribuii pe TwitterDistribuii pe FacebookTrimitei ctre Pinterest

miercuri, 12 februarie 2014


Problema Damelor
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,st[25];
void init()
{
f>>n;
for(int i=1;i<=n;i++)
st[i]=0;
}
void tipar()
{int i;
for(i=1;i<=n;i++)
g<<st[i]<<" ";
g<<endl;
}
int valid(int p)
{
for(int i=1;i<p;i++)
if(st[i]==st[p] || abs(st[p]-st[i])==abs(p-i))
return 0;
return 1;
}
void back(int p)

{ int pval;
if(p==n+1)
tipar();
else
for(pval=1;pval<=n;pval++)
{ st[p]=pval;
if(valid(p))
back(p+1);
}
}
int main()
{
init();
back(1);
return 0;
}
Publicat de Cipi Morosanu la 20:13
Trimitei prin e-mail Postai pe blog!Distribuii pe TwitterDistribuii pe FacebookTrimitei ctre Pinterest

Produsul cartezian a n multimi


#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,st[25],a[25];
void init()
{
f>>n;
for(int i=1;i<=n;i++)
{st[i]=0;
f>>a[i];}
}
void tipar(int p)
{
for(int i=1;i<=p;i++)
g<<st[i]<<" ";
g<<endl;
}
int valid(int p)
{
return 1;
}
void back(int p)
{
for(int pval=1;pval<=a[p];pval++)
{st[p]=pval;
if(valid(p))
if(p==n)
tipar(p);
else
back(p+1);
}
}
int main()
{
init();
back(1);
return 0;
}

Publicat de Cipi Morosanu la 19:05


Trimitei prin e-mail Postai pe blog!Distribuii pe TwitterDistribuii pe FacebookTrimitei ctre Pinterest

Generarea combinarilor de n luate cate k


#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,st[25],k;
void init()
{
f>>n>>k;
for(int i=1;i<=n;i++)
st[i]=0;
}
void tipar(int p)
{
for(int i=1;i<=p;i++)
g<<st[i]<<" ";
g<<endl;
}
int valid(int p)
{
if(p>1&&st[p]<=st[p-1])
return 0;
return 1;
}
void back(int p)
{
for(int pval=1;pval<=n;pval++)
{st[p]=pval;
if(valid(p))
if(p==k)
tipar(p);
else
back(p+1);
}
}
int main()
{
init();
back(1);
return 0;
}
Publicat de Cipi Morosanu la 18:54
Trimitei prin e-mail Postai pe blog!Distribuii pe TwitterDistribuii pe FacebookTrimitei ctre Pinterest
Etichete: backtracking, combinari

mari, 29 octombrie 2013


Algoritmul Roy-Warshall:Exista drum intre nodul x si nodul y?
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n,i,a[100][100],j,k,x,y;
cout<<"n=";cin>>n;

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==0&& i!=k&&j!=k)
a[i][j]=a[i][k]*a[k][j];
cout<<"Nodul initial:";cin>>x;
cout<<"Nodul final:";cin>>y;
if(a[x][y]==1)
cout<<"Exista drum intre nodul "<<x<<" si nodul "<<y<<".";
else
cout<<"NU exista drum intre nodul "<<x<<" si nodul "<<y<<".";
getch();
return 0;
}
Publicat de Cipi Morosanu la 20:47
Trimitei prin e-mail Postai pe blog!Distribuii pe TwitterDistribuii pe FacebookTrimitei ctre Pinterest

vineri, 15 martie 2013


Submultimile unei multimi
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("multime.in");
ofstream g("multime.out");
int a[100],st[100],n,v[100],k;
void citire()
{
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
}
void afisare(int p)
{ for(int i=1;i<=p;i++)
g<<st[i]<<" ";
g<<endl;
}
int valid(int p)
{ int ok=1;
for(int i=1;i<p;i++)
if(st[i]>st[p]||st[p]==st[i])
ok=0;
return ok;
}
void back(int p,int k)
{
for(int i=1;i<=n;i++)
{
st[p]=i;
if(valid(p)==1)
if(p==k)
afisare(p);
else

back(p+1,k);
}
}
int main()
{ citire();
g<<"Multimea vida\n";
for(int i=1;i<=n;i++)
back(1,i);
return 0;
}

S-ar putea să vă placă și