Search
Write a publication
Pull to refresh
0
0
Send message
Так эта, действительно можно обойтись целочисленной арифметикой, и дополнительная память не нужна — O(1), по скорости — O(N^2), показывает те же 12ms:
class Solution {
public:
    int maxPoints(vector<vector<int>>& points) {
        int res = 1;
        int size = points.size();
        for(int i = 0; i < size; i++)   
        {
            for(int j = i + 1; j < size; j++)
            {                
                int dx = points[j][0] - points[i][0];
                int dy = points[j][1] - points[i][1];
                int sum = 2;
                for(int n = j + 1; n < size; n++)
                {
                    sum += Belongs(points[i], dx, dy, points[n]) ? 1 : 0;
                }
                res = max(res, sum);
            }
        }
        return res;
    }
    
    bool Belongs(vector<int>& p, int dx, int dy, vector<int>& q)
    {
        int dxq = q[0] - p[0];
        int dyq = q[1] - p[1];
        return dx * dyq == dy * dxq;
    }
};
Ещё хорошо бы DateTime.Now вынести за пределы запроса, и использовать одно и то же значения для всех сравнений, а не запрашивать у системы новое время каждый раз.
Какой результат вернёт алгоритм, если набор данных для усреднения состоит из равного количества значений с азимутами X и X+180° и одинаковыми амлитудами?
Это осознанное решение, переводить fabric как фабрика? Вроде бы «fabric» — это «ткань», метафора, символизирующая множество возможных путей коммутации интерфейсов — ниток этой самой ткани. Фабрика как бы не при чём. Или дело обстоит как-то иначе?
Вероятно, наглядность и «интересность» Windcatcher карты можно улучшить, если заодно показывать уже установленные ветряки, расцвеченные по мощности. Было бы очень любопытно посмотреть, насколько успешно программа находит «неочевидно» выгодные места.
В формуле в случае Innocents == 0 возможно деление на ноль, обращающая Stolen в бесконечность. Может, в знаменатель надо поместить общее количество оставшихся игроков?
Согласен с Siemargl. Почему столько несогласных?

«V3022 Expression 'RowsCount > 100000' is always false. ProcessingEngine.cs 559»

Это неверное утверждение. Выражение само по себе будет истинным при RowsCount свыше 100000, нельзя утвеждать что это «always false». Другое дело, что ветка условия действительно никогда не будет выполнена.

Возможно, было бы лучше перефразировать предупреждение как-нибудь так: «V3022 Unreachable conditional operator branch identified by expression 'Expression 'RowsCount > 100000' (overridden by prior expression 'RowsCount > 20000')».

Information

Rating
Does not participate
Registered
Activity