Нахождение минимального значения массива

#arrays #c #loops #for-loop

#массивы #c #циклы #for-цикл

Вопрос:

Я создаю программу, которая выясняет, сколько n-образных полигонов на плоскости xy может пересекаться линией, параллельной оси y, я обнаружил, что могу просто рассматривать полигоны как линию на оси x с ограничениями от наименьшего значения x до наибольшегозначение x. Моя проблема здесь в том, что координаты могут доходить до 10 ^ 5, и у меня возникают проблемы с определением минимального значения x для каждого полигона. Я проверил, и я думаю, что это уже корректно, но всегда выводится, что минимальное значение x равно 0.

 #include <stdio.h>
#include <stdlib.h>

int main()
{
    long long bangun, sisi, i, j, k, l, count=0, c1=0, countmax=0, bs;
    long long max=0;
    double x;
    long long arrx[1009][1009]={0}, arrxmax[1000]={0}, arrxmin[1000]={10000000};
    scanf("%d", amp;bangun);
    for(i=0;i<bangun;i  ){
        scanf("%d", amp;sisi);
        for(j=0;j<sisi;j  ){
        scanf("%lld", amp;arrx[i][j]);
        scanf("%d", amp;bs);
        }
    }
    //give value to arrxmax[i] amp; arrxmin[i] for polygon i
    for(i=0;i<bangun;i  ){
        for(j=0;j<sisi;j  ){
            if(arrx[i][j] > arrxmax[i]){
                arrxmax[i] = arrx[i][j];
            }
            //this is the part to find the minimum value
            if(arrxmin[i] > arrx[i][j]){
                arrxmin[i] = arrx[i][j];
            }
        }
    }
    printf("%dn", arrxmin[0]);
    //finding the largest x of all polygons
    for(i=0;i<bangun;i  ){
        if(arrxmax[i]>max){
            max = arrxmax[i];
        }
    }
    for(x=0;x<=max;x =0.3){
        count = 0;
        for(i=0;i<bangun;i  ){
            if(x<arrxmax[i] amp;amp; x>arrxmin[i]){
                count  ;
                c1 = count;
            }
            if(c1>countmax){
                countmax = c1;
            }
        }
    }
    printf("%d", countmax);
    return 0;
}
  

Комментарии:

1. Какие входные данные вы используете для проверки этого? Какой результат вы ожидаете от этого ввода? Рассматривали ли вы возможность пошагового выполнения в отладчике, чтобы посмотреть, что происходит?

2. Независимо от алгоритма, вы, похоже, используете слишком много места в стеке (> 8 МБ). Если стек не был явно настроен на такие размеры, вам следует вернуться к динамическому распределению памяти или ожидать повреждения памяти и сбоев

3. @RetiredNinja 1 3 21500 500 23500 500 22500 3000, я ожидал 21500, поскольку он самый маленький, но я получил 0 как наименьший. 0 здесь не вывод программы, а вывод, когда я хочу напечатать arrxmin[0]

4. @SomeWittyUsername На данный момент это все, что я могу сделать, потому что я все еще не очень далеко продвинулся в программировании

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