Mysql
 sql >> база данни >  >> RDS >> Mysql

Матрица за търсене на всички правоъгълници с дадени размери (изберете блокове от седалки)

Този проблем е много по-добре решен извън mysql, на друг език. С други думи, имате матрица от места, някои от които са заети (сиви):

и искате да намерите всички правоъгълници с дадени размери , да речем 3x5. Можете да направите това много ефективно чрез двупроходно линейно O(n) времеа алгоритъм (n е брой места):

1) при първо преминаване , преминете по колони отдолу нагоре и за всяко място посочете броя на наличните последователни места до това:

повторете, докато:

2) при второ преминаване , преминете по редове и потърсете поне 5 последователни числа, по-големи или равни на 3:

така че накрая получавате:

което дава решението:тези поредици от числа (зелени зони) са горни ръбове на 2 възможни правоъгълника 3x5 свободни места.

Алгоритъмът може лесно да бъде подобрен до напр. вземете всички правоъгълници с максимална площ. Или може да се използва за намиране на всякакви непрекъснати области (не само с форма на правоъгълник) от N места - просто по време на второто преминаване потърсете непрекъсната последователност от числа, която е сумирана до поне N.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL презаписва ли колона със същата стойност при актуализиране?

  2. SQL помощ | Списъкът за избор за оператора INSERT съдържа по-малко елементи от списъка за вмъкване

  3. Mysql:Създаване на вградена таблица в оператора за избор?

  4. MySQL избира редове от точно преди 7 дни

  5. Команди за архивиране и възстановяване на MySQL за администриране на база данни