- •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[])
{
in >> n;
cout << n;
for (int i=0; i<n; ++i)
{
in >> slova[i]; met[i]=false;
}
for (int i=0; i<n; ++i)cout << slova[i]<<endl;
for(int i=0; i<n; ++i)
{ a[0]=slova[i];
for (int j=0; j<n; j++) met[j]=false;
met[i]=true;
search(1);
}
for (int i=0; i<n; ++i) cout << best[i] << "_";
getch();
}
Написать программу для решения задачи методом ветвей и границ.
int m_1 = 0;
int m_2 = 0;
int mO = 0;
int mini = 1000;
int m[100];
int temp[100];
int ravn[100];
int n;
void search(int k, int m1, int m2)
{
if (k > n - 1)
{
if (abs(m1 - m2) < mini)
{
mini = abs(m1 - m2);
m_1 = m1; m_2 = m2;
for (int i = 0; i < n; i++)
ravn[i] = temp[i];
}
}
else
{
mO = mO - m[k];
if (m1 + m[k] - (m2 + mO) < mini)
{
temp[k] = 1;
search(k + 1, m1 + m[k], m2);
}
if (m2 + m[k] - (m1 + mO) < mini)
{
temp[k] = 2;
search(k + 1, m1, m2 + m[k]);
}
mO = mO + m[k];
}
}
Int main(int argc, char* argv[])
{
cout << "vvedite koli4 " << endl;
cin >> n;
cout << "masu " << endl ;
for(int i = 0; i < n; i++)
{ cin >> m[i]; mO+=m[i]; temp[i]=0;}
search(0, 0, 0);
for (int i = 0; i < n; i++)
cout << ravn[i] << " ";
cout << endl;
cout << m_1 << ' ' << m_2 << ' ' << mO << endl;
}
Написать программу, реализующую метод динамического программирования для решения задачи.(черепашка)
ifstream in("fi.txt");
int n,m;
int a[100][100];
int d[100][100];
void path(int x, int y)
{
if ((x>1)||(y>1))
{
if ( (x==1)||((y>1)&&(d[x][y-1]<d[x-1][y]))) path(x,y-1); else
path(x-1,y);
}
cout <<x<<" " << y << endl;
}
Int main(int argc, char* argv[])
{
in >> m >> n;
for (int i=1; i<=n; ++i)
{ for (int j=1; j<=m; ++j) in >> a[i][j]; }
//cout << m << n;
// строим матрицу d
d[1][1]=a[1][1];
for (int j=2; j<=n; ++j) d[1][j]=a[1][j]+d[1][j-1];
for (int i=2; i<=n; ++i)
{
for (int j=1; j<=m; ++j)
{
if (d[i][j-1])
{
if (d[i-1][j]<d[i][j-1]){ d[i][j]=d[i-1][j]+a[i][j];} else
{ d[i][j]=d[i][j-1]+a[i][j]; }
} else
d[i][j]=d[i-1][j]+a[i][j];}
};
for (int i=1; i<=n; ++i)
{
for (int j=1; j<=m; ++j) cout << d[i][j]<< " ";
cout << endl;
};
path(m,n);
}
Написать программу поиска центра графа.
Написать программу для подсчета количества компонентов связности в заданном неориентированном графе.
int **mas;
int n;
int *P;
int *pre;
int col=0;
int NumPre=0;
deque<int> ocher;
void bfs(int v)
{
NumPre++;
pre[v]=NumPre;
ocher.push_back(v);
while(!ocher.empty())
{
v=ocher.front();
ocher.pop_front();
for(int i=0;i<=n-1;++i) if((mas[v][i]==1) && (pre[i]==0))
{
P[i]=v;
ocher.push_back(i);
NumPre++;
pre[i]=NumPre;
}
} ++col;
cout << col <<' ';
}
//---------------------------------------------------------------------------
