sql >> データベース >  >> RDS >> Mysql

指定された次元のすべての長方形のマトリックスを検索します(座席のブロックを選択します)

    この問題は、別の言語でmysqlの外部ではるかによく解決されます。言い換えれば、あなたは座席のマトリックスを持っており、そのうちのいくつかは占有されています(灰色のもの):

    指定された寸法のすべての長方形を検索したい 、3x5と言います。これは、2パスの線形O(n)によって非常に効率的に実行できます。 時間 アルゴリズム(nはシート数):

    1)最初のパスで 、列ごとに下から上に移動し、各座席について、これまでに利用可能な連続した座席の数を示します。

    次のようになるまで繰り返します:

    2)2回目のパスで 、行ごとに移動し、3以上の連続する数字を少なくとも5つ探します。

    したがって、最後に、次のようになります。

    これにより、解決策が得られます。これらの番号シーケンス(緑色の領域)は、フリーシートの3x5の2つの可能な長方形の上端です。

    アルゴリズムは、たとえば次のように簡単に拡張できます。最大面積のすべての長方形を取得します。または、N席の連続した領域(長方形だけでなく)を見つけるために使用することもできます。2回目のパスで、合計が少なくともNになる連続した数列を探します。



    1. ExcelでSQLiteクエリ結果を自動的に開く

    2. MySQLで署名を保存する方法

    3. MySQLのラグ/リード機能?

    4. SQLIN句用のPHP配列のフォーマット