
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
- •Int main(int argc, char* argv[])
Int main(int argc, char* argv[])
{
cout << "kolichestvo elementov : "<<endl;
cin >> n;
cout << "coberi piramidku:" <<endl;
for (int i=0; i<n; ++i)
{
cin >> temp;
if ((i>0)&&(temp > a[h-1])) { while (temp>a[h-1]) del_st(a); }
add_st(a,temp);
};
for (int i=0; i<h; ++i) cout << a[i];
}
Написать программу, использующую очередь для решения задачи.
(поиск выхода из лабиринта)
const int N=100;
int ochx[N];
int ochy[N];
int h=0;
int t=0;
char ch;
char a[N][N];
int an[N][N];
int i,j;
int m,n;
ifstream in("t.txt");
void add_och(int *a,int em)
{
a[t]=em;
t++;
};
void add_och2(int x, int y)
{
add_och(ochx,x);
t--;
add_och(ochy,y);
};
Int main(int argc, char* argv[])
{
n=m=5;
for (int i=0; i<n; ++i)
{ for (int j=0; j<m; ++j)
{
in.get(a[i][j]);
if(a[i][j]=='1') an[i][j]=-1; else an[i][j]=0;
in.get();
}
};
for (int i=0; i<n; ++i)
{ for (int j=0; j<m; ++j) cout << an[i][j]<<' '; cout << endl; }
cout << "c kakoi verschini na4at"<< endl;
int x,y,k;
cin >> x >> y;
add_och2(x,y);
k=1;
an[x][y]=k;
while ((x<n)&&(y>0)&&(x>0)&&(y<m)&&(h!=t))
{
x=ochx[h];
y=ochy[h];
if (an[x-1][y]==0) {add_och2(x-1,y); an[x-1][y]=1+an[x][y];}
if (an[x][y-1]==0) {add_och2(x,y-1); an[x][y-1]=1+an[x][y];}
if (an[x+1][y]==0) {add_och2(x+1,y); an[x+1][y]=1+an[x][y];}
if (an[x][y+1]==0) {add_och2(x,y+1); an[x][y+1]=1+an[x][y];}
h++;
};
for (int i=0; i<n; ++i)
{ for (int j=0; j<m; ++j) cout << an[i][j]<<' '; cout << endl; }
getch();
}
Написать программу, которая строит по исходному массиву двоичное дерево поиска и выводит его элементы в отсортированном порядке.
Написать программу для решения задачи методом перебора перестановок.(задача о расстановке ферзей)
int N;
int mas_new[1000][1000];
void swap(int *a, int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
int kol=0;
void perest(int * P,int m)
{
if(m==0)
{ bool f=true;
for(int i=0; i<N; ++i)// cout << P[i];
{
for (int j=i+1; j<N ; ++j)
{
if (abs(P[i]-P[j])==abs(i-j)) f=false;
}
}
if (f){ for(int i=0; i<N; ++i){ cout <<P[i];} //cout <<P[i];
cout <<endl;kol++;}
}
else
{
for(int i=0; i<=m; ++i)
{
swap(&P[i], &P[m]);
perest(P,m-1);
swap(&P[i], &P[m]);
}
}
}
void main()
{
cout << "input razmer" << endl;
cin >> N;
int *P = new int[N];
cout << "posledovatelnost" << endl;
for(int i=0; i<N; ++i) cin >> P[i];
perest(P,N-1);
cout << kol;
}
Написать программу для решения задачи методом перебора размещений с повторениями. (скобочки)
int *a;
void gener(int n, int k, int kk)
{
if(k == -1)
{
int ed=0; int nu=0;
bool f=true;
for(int i = 0; i < kk; i++)
{
if (a[i]==0) nu++;
if (a[i]==1) ed++;
if (nu<ed) f=false;
}
if (f&nu==ed)
{ for(int i = 0; i < kk; i++)
if (a[i]==0) cout << '('; else if (a[i]==1) cout << ')';
cout << endl;
}
}
else
{
for(int i = 0; i < n; i++)
{
a[k] = i;
gener(n, k-1,kk);
}
}
};
int _tmain(int argc, _TCHAR* argv[])
{
int n=2; int k; int kk;
cout << "vedite kol-vo ckobo4ek";
cin >> k;
kk=k;
a = new int[k];
gener(n,k-1,kk);
getch();
}
Написать программу, реализующую процедуры генерации сочетаний без повторений
#include <set>
const int n = 6, p = 6;
int m[n+1] = {0,12,6,4,8,6,3};
int c[n+1] = {0,21,16,8,18,9,8};
int maxm = 21, mc =0, sumo =0;
int a[n+1], b[n+1];
set<int> s, t;
void search (int k, int sm, int sc)
{
if (k>n)
{ if (sc > mc && sm <= maxm)
{ mc = sc; t = s; }}
else { sumo-=c[k];
s.insert(k);
if (sm + m[k] <=maxm) search(k+1, sm + m[k], sc + c[k]);
s.erase(k);
if (sc + sumo > mc ) search(k+1, sm , sc );
sumo+=c[k];}}
int main()
{
for (int i=1; i<=n; i++) sumo+=c[i];
search(1,0,0);
for (set<int>::iterator i=t.begin();
i!=t.end(); i++) cout << *i << " ";
cout << endl;
}
Написать программу для решения задачи методом перебора с возвратами.(игра в слова)
ifstream in("text.txt");
string slova[100];
string a[100];
string best[100];
int i=-1;
int n;
int maxe=0;
int temp=0;
bool met[100];
void search(int k)
{
for(int i=0; i<n; ++i)
{
if (met[i]==false && slova[i][0]==a[k-1][a[k-1].length()-1]){
a[k]=slova[i];
met[i]=true;
if (k>maxe) { maxe=k;
for(int l=0; l<n;++l) best[l]=a[l];
}
search(k+1);
met[i]=false;
}
};
}