0

2つのポイントがあるとしましょう

new Point(80,40);
new Point(40,80);

そして、それらを変換して、最終的に 1 つの文字列、文字列表現にしたいと考えています。

01
10

1 はポイント、0 は空きスペースです。ここでは、文字列が 40 倍に拡大され、各ポイントの幅と高さが 40 であることがわかります。すべてのポイントは 40 の倍数になります。

StringBuilder で何かを作成しようとしましたが、高さ (または y 値) ではなく、文字列の長さを指定してのみ文字を挿入できるため、どこから始めればよいかわかりません。

別の例を次に示します。

 new Point(120,80);
 new Point(80,240);
 new Point(40,80);

になる

 010
 001
 000
 000
 000
 010

何千ものポイントを持っているため、できれば効率的なソリューションが必要です。ソリューションにコードは必要ありません。これを実装する方法についてのアイデアだけです。

しかし、実際には、書き込むべき文字(上記の例ではすべて1)をキー、ポイントを値としたハッシュマップにデータが格納されています。

ハッシュマップの例

     Value             Key
 new Point(40,40)      'a'
 new Point(80,80)      'b'

その結果、

 a0
 0b
4

1 に答える 1

1

以下は、メモリを使用するソリューションですが、それでも計算効率が高いです。

  1. all- に初期化された「マップ」を表す 2D ブール配列を作成しますfalse

  2. ポイントを反復処理し、座標を 40 で割り、これを使用して配列にインデックスを付け、に設定しtrueます。

  3. 2D 配列、印刷1、または0要素ごとに反復処理します。

于 2013-06-14T15:50:25.683 に答える