ar
Feedback
C++ Chanel

C++ Chanel

الذهاب إلى القناة على Telegram
655
المشتركون
لا توجد بيانات24 ساعات
-27 أيام
-530 أيام
أرشيف المشاركات
Решение задачи:
#include <iostream>
#include <set>
#include <map>
#include <vector>
using namespace std;
 
 
int main() {
    int t{};
    cin>>t;
    vector<string> res;
    for(int g = 0;g<t;++g){
        int n;
        cin>>n;
        string result;
        vector<int> v(n,0);
        for(int i = 0;i<n;++i){
            cin>>v[i];
        }
        map<char,int> m; 
 
        for(int i = 0;i<n;++i){
            int w = 97;
            for(int j = 0;j<26;++j){
                if(m[w] == v[i]){
                    result+=(char)(w);
                    ++m[w];
                    break;
                }else{
                    w++;
                }
            }   
        }
        res.push_back(result);
    }
    for(string s : res){
        cout<<s<<endl;
    }
    
    return 0;
}

Супер интересная задача на знания контейнеров map и кодировочных наборов ( Следующий пост про них ) https://codeforces.com/problemset/problem/1927/B Решение и объяснение будет в след посте

Решение задачи:

#include <iostream>
#include <set>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int p;
    int q;
    set<int> res;
    cin >> p;
    for (int i = 0; i < p; ++i) {
        int temp;
        cin >> temp;
        res.insert(temp);
    }
    cin >> q;
    for (int i = 0; i < q; ++i) {
        int temp;
        cin >> temp;
        res.insert(temp);
    }
    if (res.size() == n && *--res.end() == n) {
        cout << "I become the guy.";
    }
    else {
        cout << "Oh, my keyboard!";
    }

    return 0;
}

К примеру: https://codeforces.com/problemset/problem/469/A простенькая задача идея которой взять два массива и соединить их в сет( из двух массивов {2,3,3} и {1,4,66,5} мы получим один сет {1,2,3,4,5,66}) Также нам нужно проверить какой самый большой элемент из двух массивов.Но как же это сделать???Можно завести переменную,но можно сделать еще легче через указатель для доступа к элементам контейнера.Для того чтобы получить последний элемент мы сначала получаем итератор на последний элемент множества a с помощью a.end(), а затем сдвигаем его на один элемент назад с помощью операции декремента --. И, наконец, с помощью операции разыменования * мы получаем значение элемента, на который указывает этот итератор, то есть мы получили последний элемент множества a.
*—a.end()

Немножечко про set,как найти последний элемент в сете ( самый большой ): в С++ set это структура данных которая хранит набор
Немножечко про set,как найти последний элемент в сете ( самый большой ): в С++ set это структура данных которая хранит набор уникальных элементов.Это значит, что каждый элемент в сете может присутствовать только один раз.Элементы в сете не имеют определенного порядка. Это означает, что вы не можете получить доступ к элементам сета по индексу, как в массиве или списке.В стандартной библиотеке C++ контейнер std::set обычно реализуется как красно-черное дерево. Красно-черное дерево является одной из наиболее эффективных реализаций сбалансированных деревьев поиска, которые обеспечивают операции вставки, удаления и поиска за логарифмическое время в среднем. Фото красно-черного дерева выше!!! Set довольно часто использую в задачах как и map который также реализуется через красно-черное дерево.

История о том как появились foo и baz Если кто-то не знает foo bar и baz это очень распространенные метки среди программистов
+1
История о том как появились foo и baz Если кто-то не знает foo bar и baz это очень распространенные метки среди программистов,они очень часто используются в примерах разных документаций или на форумах.Примеры на фото выше. 1.Взято со stack overflow: Foo и bar произошли от армейского акронима времён Второй мировой, FUBAR — “Fucked Up Beyond All Recognition” (англ. “Разбито в хлам”). Во время кампаний в Северной Африке и Сицилии (1942–1943) возникло целое семейство таких сокращений, которые можно найти в книге Рика Эткинсона Day of Battle: The War in Sicily and Italy, 1943-1944. Например, сокращение JANFU означает “Joint Army Navy Fucked Up” (англ. “Союз армии и флота облажался”), и применялось, в частности, для описания инцидента 11 июля 1943 года, когда британский флот сбил 23 транспортных самолёта США с десантом. В реальном деве переменная не должна быть бессмысленной!!!! Например в циклах i,j,k и так далее (от итерации)

Решение:
class Solution {
public:
    int maxLengthBetweenEqualCharacters(string s) {

        int result {-1};

        for(int i = 0;i<s.size();++i){

            for(int j = i+1;j<s.size();++j){

                if(s[i] == s[j])
                    result = max(j-i-1,result);

            }
        }
        
        return result;
    }
};

Интересная задача на leetcode https://leetcode.com/problems/largest-substring-between-two-equal-characters/ Решение скину позже

тут я мог и использовать стейтмент,как и в олимпиадных задачах,там где используются только стандартная библиотека.Но про реальные проекты написано в ссылке сверху

#include <iostream>

class Artist {
public:
    void Start() {
        Requesting();
    }
private:

    void Requesting() {
        std::string figure;
        bool run = 0; // run будет равна false
        std::cout << "Write what figure you want to draw: \n 1: Romb \n 2: Square \n 3: Triangle \n Write number or figure name: ";
        std::cin >> figure;
        while (!run) {
            if (figure == "1" || figure == "Romb") {
                DrawRomb();
                break;
            }
            else if (figure == "2" || figure == "Square") {
                DrawSquare();
                break;
            }
            else if (figure == "3" || figure == "Triangle") {
                DrawTriangle();
                break;
            }
            else {
                std::cout << "Please enter again: ";
                std::cin >> figure;
            }
        }
    }
    void DrawRomb() {
        int radius{}; // radius == 0
        std::cout << "Enter radius: ";
        std::cin >> radius;
        std::cout << "\n";
        int xval = radius;
        bool part1 = 1;
        int sval = radius + 1;
        for (int i = 0; i < (radius * 2) + 1; ++i) {
            for (int j = 0; j < (radius * 2) + 2; ++j) {
                if (j == xval || j == sval) {
                    if (j == xval) {
                        std::cout << "x";
                    }
                    if (j == sval) {
                        std::cout << "s";
                    }
                }
                else {
                    std::cout << " ";
                }
            }
            if (i >= radius)part1 = false;
            if (part1) {
                --xval;
                ++sval;
            }
            else {
                ++xval;
                --sval;
            }
            std::cout << std::endl;
        }

    }

    void DrawTriangle() {
        int height{};
        char c;
        std::cout << "Write height: ";
        std::cin >> height;
        std::cout << "\nWrite symbol to draw triangle: ";
        std::cin >> c;
        int index = height;
        int index2 = height - 1;
        std::cout << "\n";
        for (int y = 0; y < height; ++y) {
            for (int x = 0; x < height * 2; ++x) {
                if (y == height - 1)
                    std::cout << c;
                else if (x == index || x == index2)
                    std::cout << c;
                else std::cout << ' ';

            }
            index++;
            index2--;
            std::cout << "\n";
        }
    }

    void DrawSquare() {
        int size{};
        std::string temp;
        std::cout << "Write size of side: ";
        std::cin >> size;
        std::cout << "\nFilled? (yes/no): ";
        std::cin >> temp;
        bool filled = temp == "yes";

        if (!filled) {
            for (int y = 0; y < size; ++y) {
                for (int x = 0; x < size; ++x) {
                    if (y == 0 || y == size - 1)
                        std::cout << '#';
                    else if (x == 0 || x == size - 1)
                        std::cout << '#';
                    else
                        std::cout << ' ';
                }
                std::cout << "\n";

            }
        }
        else {
            for (int y = 0; y < size; ++y) {
                for (int x = 0; x < size; ++x) {
                    std::cout << '#';
                }
                std::cout << "\n";

            }
        }
    }
};


int main() {
    Artist art;
    art.Start();

    return 0;
}

Идея для консольного приложения Создать класс который будет рисовать фигуры в консоли разными символами,с заливкой или без По
Идея для консольного приложения Создать класс который будет рисовать фигуры в консоли разными символами,с заливкой или без Позже выложу код

Для разработки приложений под новый Apple Vision Pro нужно иметь специальный коннектор,для подключения очков к маку,аймаку Це
Для разработки приложений под новый Apple Vision Pro нужно иметь специальный коннектор,для подключения очков к маку,аймаку Цена 300$…

Существует чат этого канала💬 https://t.me/+QY_o0suBPTxlZmJi

https://learn.microsoft.com/ru-ru/windows/win32/learnwin32/learn-to-program-for-windows windows.h уроки для начинающих от Microsoft Для тех у кого есть базовое понимание о языке С++‼️‼️

Как решать бинарные деревья? Самый простой способ это через рекурсию.Но в параметры мы указываем дочерние элементы дерева.Проходим до того момента пока
  tree->val != NULL  
В каждой задаче после всех манипуляций будем возвращать наш результат.Расмотрим на примере: https://leetcode.com/problems/range-sum-of-bst/description/

class Solution {
int result{};
public:
    int rangeSumBST(TreeNode* root, int low, int high) {
        if(root == NULL)return result;
        
        if(root->val >= low && root->val <= high)result += root->val;

        rangeSumBST(root->left,low,high);
        rangeSumBST(root->right,low,high);

        return result;
    }
};
В этой задаче нам нужно найти сумму узлов в определенном радиусе.Сначала создаем переменную в которую будем складывать подходящие числа.Дальше делаем проверку если узла после рекурсии не существует - мы выходим.В следующей строке проверяем если число больше минимума и меньше максимума.Дальше рекурсия по правым и левым узлам.И только когда мы выйдем из всех рекурсий мы возвращаем результат

Сегодня завтра запощу инфу как решать задачи про бинарные деревья с помощью рекурсии

GradeJS — проект с открытым исходным кодом, который позволяет анализировать производственные пакеты веб-пакетов без доступа к
GradeJS проект с открытым исходным кодом, который позволяет анализировать производственные пакеты веб-пакетов без доступа к исходному коду веб-сайта. Он обнаруживает список связанных библиотек NPM и работает даже для минимизированных или древовидных пакетов. Языки: #TypeScript (82.8%), #SCSS (13.9%), #JS (1.6%), #Shell (1.5%), #HTML (0.2%).

Yai — помощник терминала с ИИ. Помощник вашего терминала, использующий OpenAI ChatGPT для создания и выполнения команд за вас. Вам просто нужно описать их своим повседневным языком, все остальное будет сделано. Языки: #Go (97.1%), #Shell (2.9%). https://github.com/ekkinox/yai

Решение:
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
int result = 0;
public:
    int rangeSumBST(TreeNode* root, int low, int high) {
        if(root == NULL)return result;
        
        if(root->val >= low && root->val <= high)result += root->val;

        rangeSumBST(root->left,low,high);
        rangeSumBST(root->right,low,high);

        return result;
    }
};