Материал: Динамічні структури даних

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

}& operator<<(ostream & os, const R_Matrix &mtr)

{(unsigned i = 0; i < mtr.columns; ++i)

{(unsigned j = 0; j < mtr.rows; ++j)

{(! mtr.Check(i, j)) << "0 ";

{(list<data>::const_iterator c_itr = mtr.lst.cbegin(); c_itr != mtr.lst.cend(); c_itr++)

{(i == c_itr->i && j == c_itr->j) << c_itr->val << " ";

}

}<< endl;

}os;

}main()

{unsigned n = 5;unsigned m = 4;**mtr1; **mtr2;

#pragma region= new UserType*[n];mtr2 = new UserType*[n];(int i = 0; i < n; ++i)

{[i] = new UserType[m];[i] = new UserType[m];

}

#pragma endregion

#pragma region (int i = 0; i < n; ++i) (int j = 0; j < m; ++j)

{[i][j] = 0;[i][j] = 0;

}[0][2] = 4;[0][1] = 3;[1][3] = 1;[3][2] = 7;[4][0] = 3;[3][1] = 2;

[0][0] = 12;[0][3] = 5;[2][3] = 2;[3][3] = 15;[4][0] = 3;

#pragma endregion_Matrix r_mtr1(mtr1, n, m); _Matrix r_mtr2;_mtr2.AddR_Matrix(mtr2, n, m);_Matrix res;= r_mtr1 + r_mtr2; << "Firs matrix: " << endl << r_mtr1 << endl; << "Second matrix: " << endl << r_mtr2 << endl;<< "Result matrix: " << endl << res << endl;

system("pause");0;

}



ДОДАТОК Г. КОД ПРОГРАМИ ДО ЗАВДАННЯ 4

#include <iostream>

#include <string>namespace std;Domino{left,right;

};DominoSeq{* seq;count;length;sum;

};DominoSeq maxLength;

static DominoSeq maxSum;

//ф-ція визначення суми на фішках, що не використані

int ComputeSum(Domino* pack, int* usingDomino, int count){sum=0;(int i = 0; i < count; i++)

{(usingDomino[i]==0)+=pack[i].left + pack[i].right;

}sum;

}PrintDominoSeq(DominoSeq ds){<<" Послiдовнiсть - ";(int i = 0; i<ds.length; i++)<<ds.seq[i].left<<"|"<<ds.seq[i].right<<" ";

cout<<endl;

}

//ф-ції перевірки та додання нової фішки до послідовності

int TryAppend(Domino a, Domino b){(a.right==b.left || a.right == b.right)1;0;

}Append(Domino* pack, int a, int b, int* usingDomino, DominoSeq &ds){(pack[a].right == pack[b].right){tmp = pack[b].left;[b].left = pack[b].right;[b].right = tmp;

}.seq[ds.length++]=pack[b];[b]=1;

}

//перевірка можливості продовженняCanContinue(Domino* pack, int startDominoIndex, int* usingDomino, int count){(int i=0; i<count; i++)(usingDomino[i]!=1 && i!=startDominoIndex && TryAppend(pack[startDominoIndex],pack[i]))1;0;

}Compute(Domino* pack, int startDominoIndex, int* usingDomino, int count, DominoSeq &ds){(int j=0; j<count; j++){(!CanContinue(pack, startDominoIndex, usingDomino, count)){(ds.length>maxLength.length)=ds;.sum=ComputeSum(pack,usingDomino,count);(ds.sum>maxSum.sum)=ds;

}(j==startDominoIndex);(usingDomino[j]!=1 && TryAppend(pack[startDominoIndex],pack[j])){* tmpUsingDomino = new int[count];(tmpUsingDomino,usingDomino,count*sizeof(int));* tmpDominoPack = new Domino[count];//так як фішки можуть обертатися (2|3 -> 3|2) потрібно зберігати проміжні масивии фішок(tmpDominoPack,pack,count*sizeof(Domino));tmpDS;.count = count;.length = ds.length;.seq = new Domino[count];//зберігання поточної послідовності фішок(tmpDS.seq,ds.seq,count*sizeof(Domino));(tmpDominoPack, startDominoIndex, j, tmpUsingDomino, tmpDS);(tmpDominoPack, j, tmpUsingDomino, count, tmpDS);

}

}

}ArrayReverse(Domino* pack, int count){ //поворот масиву фішок(int i = 0; i < count; i++)

{tmp = pack[i].left;[i].left = pack[i].right;[i].right = tmp;

}

}main()

{(0,".1251");count=0;>>count;* pack = new Domino[count];(int i = 0; i < count; i++)>>pack[i].left>>pack[i].right;.length=0;.sum=-1;(int steps=0;steps<2;steps++){(int i = 0; i < count; i++)

{

//ініціалізація масиву використаних фішок* usingDomino = new int[count];(int j=0; j<count; j++) [j]=0;[i]=1;

//-----ds;.count=count;.seq = new Domino[count];.length=1;.sum = ComputeSum(pack, usingDomino, count);.seq[0]=pack[i];(pack, i, usingDomino, count, ds);

delete[] usingDomino;

}

//поворот перших фішок та повтор(pack,count);

}<<"Макс. довжина : "<<maxLength.length;

PrintDominoSeq(maxLength);<<"Макс. сума : "<<maxSum.sum;(maxSum);[] pack;("pause");

return 0;

}