2008年10月2日木曜日

10月2日~行・列・対角線(3)~

 同じ問題をさらに追及。考えてみると16×16の二次元配列の「対角線」というのは当然2本しかない。だからその2本について右下がりの対角線と左下がりの対角線についてそれぞれ「1」のビットをずらして1つでも「0」が混じっていたら、最終的にそれぞれのデータを保持しているレジスタが論理積の結果、「0」かどうかだけ判別すればいいわけだから、対角線のビット判定はきわめて容易なわけだ。その一方で行はその行が「♯FFFF」かどうかを調べてSUBAが「0」であれば担当のレジスタを1つづつカウントアップしていけばよいということになる。そして列もまた論理積で最終的に「1」となっているビット列の「1」の数を数えていけば該当数が求められるということになる。縦・横・斜めで非常に難しいように思ったが、考えてみると当然の理屈を踏まえた問題だ…。あとは左シフトをオーバーフローを探していくだけなのでそれだけ理解すると設問1と2は軽く解答できた…。あと設問3…というところで電車は目的地に到着…。

0 件のコメント: