2013年01月21日

C#でビンパッキング問題を解く

  
Webサイト「Gushwell's C# Programming Page」にビンパッキング問題を解くC#の
プログラムを掲載しました。

ビンパッキング問題は、重さの違う荷物が複数あり、それを箱に詰め込んでいくときに、どのように
詰めていけば、最少の箱で済むかを求める問題です。
Silverlightで書いていますので、実際に動かすことができます。興味のある方はどうぞご覧になって
ください。


この記事に対して、neuecc さんからフィードバックがありました。
Count() + First() を使うのは、2回走査が走るので、LINQ的にはよろしくないというものです。
確かにその通りですね。このコードだとどんな場合でも最後まで走査することになりますが,
FirstOrDefault ならば、最大で1つまでですからね。
そのうち直しておきます。

まあ、アルゴリズムの説明としては、Count() + First()のほうがわかりやすいことはわかりやすい
のですが...

ところで、「プログラム小品集」にプログラムを追加するのは、なんと5か月ぶりということで、
ずいぶん間が空いてしまいました。
ネタはあと6,7個考えているので、今後は月1回のペースで更新できればと思っています。

それと、「プログラム小品集」に掲載してているプログラム数ももずいぶんと増えたので、
いくつかに分割しようと考えています。
少なくとも、パズル関連は、
「C#でパズルを解こう」
として独立させようと考えています。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52300687