私はこのような問題を解決するためにアルゴリズムを検索しています:
ウィンドウがほとんどありません。各ウィンドウは移動したりサイズを変更したりできますが、幅と高さの比率を指定します。2:1(高さ:幅)。
各ウィンドウを他のウィンドウに配置することはできず、すべてのウィンドウが完全に表示されている必要があります。空き領域(デスクトップの壁紙の可視性)は最小限にする必要があります。
このタイプの問題に必要なアルゴリズムを誰かに教えてもらえますか?
こんにちは、
パッキングよりも実装が簡単な別のアプローチは、画面サイズを必要な数のペインに分割してから、ペイン内の他の要件を満たすウィンドウに合わせるというものです。いつでも開いているウィンドウの数は少なく、画面のサイズは動的に変化しないため、1からO(100)までの開いているウィンドウに必要なすべての配置を事前に計算できます。
すべてのウィンドウに特定の「アスペクト比」があるという要件を緩和できれば、問題は非常に単純になります。単一の画面に配置する「タイル」があるとするとN
、これらは列に配置できます。列の数は、完全な正方形ではない場合の切り上げNumCols
の平方根です。タイルのすべての列は同じ幅です。次に、各列のタイルの数は、列の総数がになるように、必要に応じて切り上げまたは切り捨てられます。これは、MicrosoftExcelが[表示]>[すべて配置]>[並べて表示]で行うことです。Excelは、画面の左側にタイルが1つ少ない列を配置することを選択します。N
N
N/NumCols
N