トップページ > プログラム > 2015年03月26日 > BDjvcE7V

書き込み順位&時間帯一覧

7 位/156 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000011020004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part116 [転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part116 [転載禁止]©2ch.net
332 :デフォルトの名無しさん[sage]:2015/03/26(木) 17:08:05.75 ID:BDjvcE7V
n桁のm進数の桁を入れ替えるプログラムを作りたいのですが、どうしたら効率的でしょうか。
桁数分(n個)ループを回すような愚直な方法しか思い付きません。

任意の並び替えを実現したいのですが、「○桁目を右に△個ずらす」ようなアルゴリズムでも構いません。
それを何回かやれば任意のケースに対応できると思うので。

nは16まで、mは64までに限っても良いです。
C++相談室 part116 [転載禁止]©2ch.net
337 :デフォルトの名無しさん[sage]:2015/03/26(木) 18:25:41.64 ID:BDjvcE7V
自分で言うのもなんですが>>332に書いた愚直な方法だとコストはO(m^n)で最悪ですね。
C++相談室 part116 [転載禁止]©2ch.net
342 :デフォルトの名無しさん[sage]:2015/03/26(木) 20:10:26.73 ID:BDjvcE7V
もし、任意の入れ替えを諦めてサイクリックな置換にだけ対応しようとしたらコスト減らせたりするでしょうか。

例えば8桁の
abcdefgh

ghabcdef
に入れ替えるようなケースです。
C++相談室 part116 [転載禁止]©2ch.net
343 :デフォルトの名無しさん[sage]:2015/03/26(木) 20:19:07.25 ID:BDjvcE7V
配列要素全部を入れ替えようとしなければ>>340で一発ですかね?
ちょっと考えてみます。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。