Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Заполнение массива случайными неповторяющимися числами и нахождение минимального элемента
- #include <iostream>
- #include <ctime>
- using namespace std;
- int main()
- {
- srand(time(NULL));
- const int SIZE = 10; //Размер изменять тут
- int arr[SIZE];
- //Заполнение
- for (int i = 0; i < SIZE; i++) {
- arr[i] = rand() % 100; //Можно выставить любой диапазон
- for (int j = 0; j < i; j++) { //Вложенный цикл для нахождения повторяющихся элементов и их замены
- if (arr[i] == arr[j]) {
- i--;
- break;
- }
- }
- }
- //Нахождение минимального элемента
- int min = arr[0];
- for (int i = 1; i < SIZE; i++) {
- if (min > arr[i]) {
- min = arr[i];
- }
- }
- // Вывод массива
- for (int i = 0; i < SIZE; i++) {
- cout << arr[i] << endl;
- }
- cout << "min = " << min;
- }
- 2. Перевод из десятичной в негадвоичную
- #include <iostream>
- #include <ctime>
- using namespace std;
- void main()
- {
- int num_ten, rem = 0;
- cin >> num_ten;
- string num_two = "";
- while (num_ten != 0) {
- rem = num_ten % -2;
- num_ten /= -2;
- if (rem < 0) {
- rem *= -1;
- num_ten++;
- }
- if (rem == 1) {
- num_two = "1" + num_two;
- }
- if (rem == 0) {
- num_two = "0" + num_two;
- }
- }
- cout << num_two;
- }
- 2.1 Вывод цифр по одной
- cout << num_two << endl;
- for (int i = 0; i < size(num_two); i++) {
- cout << num_two[i] << " ";
- }
- 3. Дерево и поиск максимального
- #include <iostream>
- #include <ctime>
- #include <string>
- #include <cstring>
- using namespace std;
- const int MAXN = 8, INF = 10e9;
- int dataa[MAXN];
- int tree[MAXN * 4];
- void buildTree(int p, int l, int r)
- {
- if (r - l == 1) {
- tree[p] = dataa[l];
- return;
- }
- int m = (r + l) / 2;
- buildTree(2 * p + 1, l, m);
- buildTree(2 * p + 2, m, r);
- tree[p] = max(tree[2 * p + 1], tree[2 * p + 2]);
- }
- int getMax(int p, int l, int r, int a, int b)
- {
- if (b <= l || r <= a) {
- return -INF;
- }
- if (a <= l && r <= b) {
- return tree[p];
- }
- int m = (r + l) / 2;
- return max(getMax(2 * p + 1, l, m, a, b), getMax(2 * p + 2, m, r, a, b));
- }
- void rebuild(int p, int l, int r, int index, int value)
- {
- int m = (r + l) / 2;
- if ((l == index || r - 1 == index) && (r - l == 1)) {
- tree[p] = value;
- return;
- }
- if (!(l == index || r - 1 == index) && (r - l == 1)) {
- return;
- }
- rebuild(2 * p + 1, l, m, index, value);
- rebuild(2 * p + 2, m, r, index, value);
- tree[p] = max(tree[2 * p + 1], tree[2 * p + 2]);
- }
- void fillArray() {
- srand(time(NULL));
- for (int i = 0; i < MAXN; i++) {
- dataa[i] = rand() % 100;
- }
- }
- void printTabs(int a, char b) {
- for (int i = 0; i < a; i++) {
- cout << b;
- }
- }
- void printTree()
- {
- int checker = 1;
- int counter = 0;
- int number_of_tabs = MAXN / 2;
- char tabula = ' ';
- printTabs(number_of_tabs * 2, tabula);
- for (int i = 0; i < 4 * MAXN; i++) {
- cout << tree[i] << " ";
- counter++;
- if (i == checker - 1) {
- number_of_tabs--;
- cout << endl;
- printTabs(number_of_tabs * 2, tabula);
- checker = 2 * checker + 1;
- counter = 0;
- }
- if (counter - MAXN == MAXN) {
- cout << "reserve" << endl;
- }
- }
- }
- int main()
- {
- fillArray();
- buildTree(0, 0, MAXN);
- printTree();
- int ain, bain, enter, index, value, enter1;
- cout << endl;
- cout << "Type 1 if you want to find max number: ";
- cin >> enter;
- if (enter == 1) {
- cin >> ain >> bain;
- cout << "Max number is " << getMax(0, 0, MAXN, ain, bain) << endl;
- }
- cout << "Type 1 if you want to rebuild the tree: ";
- cin >> enter1;
- if (enter1 == 1) {
- cin >> index >> value;
- rebuild(0, 0, MAXN, index, value);
- printTree();
- }
- return 0;
- }
- 4. Дерево и поиск минимального
- #include <iostream>
- #include <ctime>
- #include <string>
- #include <cstring>
- using namespace std;
- const int MAXN = 100000, INF = 10e9;
- int dataa[MAXN];
- int tree[MAXN];
- void buildTree(int p, int l, int r)
- {
- if (r - l == 1) {
- tree[p] = dataa[l];
- return;
- }
- int m = (r + l) / 2;
- buildTree(2 * p + 1, l, m);
- buildTree(2 * p + 2, m, r);
- tree[p] = min(tree[2 * p + 1], tree[2 * p + 2]);
- }
- int getMin(int p, int l, int r, int a, int b)
- {
- if (a == b) {
- return dataa[a-1];
- }
- if (b <= l || r+1 <= a) {
- return INF;
- }
- if (a <= l+1 && r <= b+1) {
- return tree[p];
- }
- int m = (r + l) / 2;
- return min(getMin(2 * p + 1, l, m, a, b), getMin(2 * p + 2, m, r, a, b));
- }
- void fillArray(int n)
- {
- for (int i = 0; i < n; i++) {
- cin >> dataa[i];
- }
- }
- void printArray(int n, int a[])
- {
- for (int i = 0; i < n * 4; i++) {
- cout << a[i];
- cout << " ";
- }
- }
- void printArrayofAns(int n, int a[])
- {
- for (int i = 0; i < n; i++) {
- cout << a[i];
- cout << endl;
- }
- }
- int main()
- {
- int q, n;
- cin >> n;
- fillArray(n);
- buildTree(0, 0, n);
- //printArray(n, tree);
- cin >> q;
- int respondoj[10000];
- for (int i = 0; i < q; i++) {
- int l, r;
- cin >> l >> r;
- respondoj[i] = getMin(0, 0, n, l, r);
- }
- printArrayofAns(q, respondoj);
- }
- 5. Членение строки на слова
- for (int i = 0; i < entero.size(); i++)
- {
- if (entero[i] == ' ' && entero[i - 1] != ' ')
- {
- string strtemp, str1 = entero;
- strtemp = str1.substr(0, i);
- //strtemp - искомая
- }
- if (i + 1 == entero.size())
- {
- //entero - искомая
- }
- if (entero[i] == ' ' && entero[i + 1] != ' ')
- {
- entero == entero.erase(0, i + 1);
- i = 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement