下回る分割方法はない)。組み合わせで総当たりに計算しても、本棚の厚みを少しづつ増やしていく方法で反復的に計算しても、その計算量は膨大になります。動的計画法で解いてみましょう。以下のデータを用意します。合計が記録されています。1,,,n)となります。1,,,k)となります。番目までの要素を1つの部分とした場合の合計値を示します。上記のデータを例にとると、M[i][j]は以下のようになります。場合は以下の組み合わせが考えられますが、この中で最適なものを選びます。本の橋で繋がっています。各橋の維持費(コスト)が決められています。どの都市にでも行くことができるように橋を残しつつ、橋の維持費の合計が最小になるように、いくつかの橋を壊したときの、維持費の合計を求めて下さい。重み付きグラフの最小全域木を求める問題です。アルゴリズムで解きました。07いくつかの玉のような形をした体節でつながっている不思議な虫がいます。体節は赤(r)、緑(g)、青(b)のいづれかの色をもっています。つの体節の色のどちらでもない色に同時に変わる。秒後まですべて表したものが以下の図です。状態空間における幅優先探索で解きます。なる文字列(そのまま)で表します。使うと実装が楽になります(速度は落ちるでしょう)。06テトリスをシミュレーションして下さい。種類です(全部で10種類)。いくつかのブロックを落としていき、全てブロックで埋まった横一列は削除され、その列の上にあったブロックたちはそのままの形で下へ落ちます。最後に残るブロックのコマ数を求めて下さい。50出力例2解説2次元配列で盤面を表現することもできますが、ここでは整数型の1次元配列(stack)で盤面を表します。行目のブロック片の状態を記録します。各行のブロック片の状態を整数で表すために、ブロック片の並びをビットとみなします。■□■■□は10110(2進数)と表されるので、22(10進数)となります。このstackに、同様に整数で表されたブロックを落としていきます。上記の盤面にブロック■■■□□を落とすと5□□□■□4■■■■□3■□■■■2■■■□□1■□■■□となります。ここで、ブロックが置かれる位置は、ブロックを上から落としたときに、すでにあるブロック片にひっかかる直前の位置です。頂点から下に向かってブロックの値とスタックの値の論理積をとり、論理積が0とならない直前の位置となります。なるので、すり抜けます。ならないので、このブロック片の上にブロックが置かれます。場所を消していきます。05地球上の2つの都市の北緯と東経を入力し、地表距離を計算して出力して下さい。解説これは数学の問題です。r*cos(theta);となります。