令和5年春期午後問3

かんちさん  
(No.1)
https://www.ap-siken.com/kakomon/05_haru/pm03.html
1.図4の最下層以外の計算でfor(dpをt_depth - 1から1まで1ずつずらす)とありますが、t_depth=3なので、dpは2から1までですよね?
2.dp=2のとき、cidx←layer_top[dp + 1] + エ //子ノード①へのインデックス、とありますが、cidx←3となり子ノード①へのインデックスではないと思うのですが。それとも、dp=2は無視されdp=1でel.resultに値が入るということでしょうか?
教えていただけると助かります。よろしくお願いします。
2024.10.30 17:41
boyonboyonさん 
AP シルバーマイスター
(No.2)
主な流れを書きます。

dp=2のとき
iは、1,2,3となるので、内側のループは3回実行されます。
i=1のとき
el←elements[2]
cindx←layer_top[3]+3*0=5 //子ノード①は、elからみた子ノードです。
elements[5]  1x5  α  result  5   ①
elements[6]  2x6  β  result  12   ②
elements[7]  3x11  γ  result  33  ③
・・・計算すると
elements[2].result  672

i=2のとき
el←elements[3]
cindx←layer_top[3]+3*1=8  //子ノード①
elements[8]  3x7  α  result  21
elements[9]  4x8  β  result  32
elements[10]  7x15  γ  result  105
・・・計算すると
elements[3].result  2652

i=3のとき
el←elements[4]
cindx←layer_top[3]+3*2=11  //子ノード①
elements[11]  略
elements[12]  略
elements[13]  略
・・・計算すると
elements[4].result  6164  になるはず。

dp=1のとき
iは、1のときだけになります。
i=1
el←elements[1]
cindx←layer_top[2]+3*0=2 //子ノード①は、elからみた子ノードです。
elements[2]  12x56  α  result  672
elements[3]  34x78  β  result  2652
elements[4]  46x134  γ  result  6164
・・・計算すると
elements[1].result  7006652

になります。
2024.10.30 23:13
かんちさん  
(No.3)
ご返信ありがとうございました。
主な流れを書いていただきすっきりしました。

一人で考えていると、
dp=2、 i=1のとき、elements[5],[6],[7]が計算されるので、これは最下層の計算になるのでは??と悩み続けていたでしょう。

ありがとうございました。
2024.10.31 05:39

返信投稿用フォーム

※SQL文は全角文字で記載してください。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む記事の投稿はできません。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop