HOME»基本情報技術者試験掲示板»平成21年春期午後問8

基本情報技術者試験掲示板


[3877]平成21年春期午後問8

 はんまさん(No.1) 
https://www.fe-siken.com/kakomon/21_haru/pm08.html

情報の勉強始めたてでアホな質問だと思うのですがすみません。
cがなぜ2(m+n)になるのか全然わからないです。
例も挙げて説明してくださるととても助かります。
よろしくお願いします。
2021.11.22 21:09
chihiroさん(No.2) 
FE・ゴールドエキスパート
プログラムの行番号15〜23では表示領域の外周に値0を設定しています。これを壁と呼ぶことにします。壁は辺の長さがそれぞれm、nの長方形を囲むと考えられるので、その数は長方形の周の長さだけあればいいです。長方形は、長さm、nの辺をそれぞれ2つ持つので、周の長さは2(m+n)です。図形的に考えるとこんな感じです。
2021.11.22 21:45
 はんまさん(No.3) 
お返事ありがとうございます。
長さm、nの辺をそれぞれ2つ持つということはわかるのですが、それで2(m+n)にすると重なってる四つ角が余分にカウントされませんか?
なので余分にカウントされた分の4を引いて2(m+n)-4。すなわち2(m+n-2)が正解だと思ったのですが、、
2021.11.23 06:59
chihiroさん(No.4) 
FE・ゴールドエキスパート
>cがなぜ2(m+n)になるのか全然わからないです。
>長さm、nの辺をそれぞれ2つ持つということはわかるのですが
私はあなたが「全然わからない」と仰っていたのでこのような説明をしました。何がわかっていて、何がわからないのか、それが明確でなければ、あなたの求めているであろう回答はできません。最低限、その程度は説明してください。
>長さm、nの辺をそれぞれ2つ持つということはわかるのですが、それで2(m+n)にすると重なってる四つ角が余分にカウントされませんか?
>なので余分にカウントされた分の4を引いて2(m+n)-4。すなわち2(m+n-2)が正解だと思ったのですが
これを質問時に併記すべきです。併記されていれば、この点に関する説明をすればいいとわかるからです。
長くなりましたが説明します。壁は長方形の内側ではなく外側に作るものなので重なりようがありません。よって-4する必要はありません。
例えば描画範囲が7×9(Image[1,1]〜Image[7,9])であれば、その外側である、Image[0,1]〜Image[0,9],Image[8,1]〜Image[8,9],Image[1,0]〜Image[7,0],Image[1,10]〜Image[7,10]を壁にすればいいです。この壁の数は32個であり、2*(7+9)と同じです。
ちなみに外周の四隅である、Image[0,0],Image[8,0],Image[8,10],Image[0,10]は壁にする必要はありません。プログラムの行番号15〜23を見ても四隅を壁にしていないことがわかりますが、プログラムが色の塗り替えのために参照するマスは、基準マスの上下左右の4か所だけなので、外周の四隅を参照することは絶対にないからです(壁を基準マスにすることはありえませんので)。
2021.11.23 10:34
 はんまさん(No.5) 
なるほど!四つ角はそもそも壁にしないのですね!
質問の仕方のご指摘と、丁寧な説明ありがとうございました!
2021.11.23 11:22

返信投稿用フォーム

スパム防止のために初投稿日から30日経過したスレッドへの書き込みは禁止しています。

© 2010-2022 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop