さっきのアルゴリズムの問題の答え載せるで〜
■ このスレッドは過去ログ倉庫に格納されています
Nを自然数として、
Nの正の倍数における各桁の和の最小値を求めるアルゴリズムで一番効率いいものはなんだ?
この問題や
まだ自分で解きたいやつはそっ閉じしてや まずはNで割った余りの世界を考えるんや
掛け算も足し算も全部Nで割った余りに換算される世界を想定してや
例えばN=7なら
6+5=4やし、
2×6=5
や ここで、0〜N-1という番号のついた頂点を平面上に配置するんや >>5
その通りやで〜
数学分かるやつならZ/NZのことやな 任意の頂点pに対して、
頂点10×pに「コスト(辺を渡る値段と思えばええで)0」の有向辺をくっ付ける
さらに頂点pから頂点p+1に「コスト1」の有向辺をくっ付けるんや そうすると>>1の問題は
頂点1から頂点0に渡る経路で最もコストが安いもの
って問題に変化するんや あとはそこから有向グラフの最短経路問題を解けばええから
深さ優先探索とかをすればおしまいや 1という数から(1を足す or 10倍する)という操作を繰り返してNの倍数を作る
ってのが頂点1から頂点0に渡るって行為になるわけやけど はぇ~
数式から経路探索問題に置き換えて解くんか
競プロ民って凄いな 「各桁の和」という意味では
pを10×pにしても変化しないからコストは0
pをp+1にしたら1だけ増えるからコストは1
ってことなんや 9→10に行くのがコスト1ってのが分からんで
高校数学で止まってるから群?とか環?とか慣れてないんだわ いきなり答えにたどり着くならそれが早そうやけど
ヒューリスティックな絞り込みとか出来んのかな確率的に 1から1001を作るには
x10を3回、+1を1回の操作が必要で
ゴールが7の倍数だから7つの頂点で0を目指す感じやな
分かってきたで!!!! >>17
たしかにそれがコスト1ってのはおかしいんやけど、
最短経路を見る上では関係ないんやで
コストの安さで考えれば1を足し続けて桁上げするより10倍した方が効率ええからね >>20
天才やな
このテキトー解説で分かるのは相当頭ええで 円筒形の模型作って探索するのか
よくこんなん思いつくなぁ >>23
残念ながら元スレ1じゃなくて外野なんやけどな
勉強になったわさんきゅーやで! 通る頂点の数関係あるんか?
深度で分けてひたすら7で割るわけじゃないのか ワイ程度の理解で伝わるか分からんが
例えばN=7なら
コスト2の数つまり11、101、110、1001、…から7の倍数を探して見つかれば答えは2や
無かったらコスト3の数つまり111、1110、1101、…から探して見つかれば答えは3や
って感じに探していくんやけどこれだけなら無限回の試行が必要やから
7で割った余りに注目して有限回の試行で済ませば終わりやって感じで
それをグラフに落とし込んだのが1の答えやって感じで理解したわ
間違っとったらすまんな 頂点の数の上限ってことかありがとう
>>1と>>29 ■ このスレッドは過去ログ倉庫に格納されています