
例えば、1,2,3というのは3つの数字であり、順列の数は3!=6となり、
123
132
213
231
312
321
となります(重複なしのシャッフルだけということです)。数字を全部使うと、0123456789の10個であり個数は10!です。(自然数という意味だったら先頭が0だとダメとかありますがそれは考えないとして)。またアルファベット26文字を並び替えると26!通りになります。それを全部表示するアルゴリズムはどのようなものがあるでしょうか。ちょっと考えてみましたが、思いつきません。
pythonだと1000!とか10000!の数を表示してくれます。しかし例えば11だと0~10までの数字を並び変えるので二けただと変則的かなと思いますが。とにかく、N!個の順列を全部表示してくれるアルゴリズムはどうなるでしょうか。
できれば言語の仕様に特化したものでない方がいいのですが。あるいはそのような機能がライブラリに含まれているような言語でない方がいいです。
よろしくお願いします。
A 回答 (11件中1~10件)
- 最新から表示
- 回答順に表示
No.11
- 回答日時:
正方行列のデターミネントを定義通りに計算する時に用いる関数で、n個の数値をすべての順列をある順番に並べた場合、k番目(k <= n!)の順列を返すものがありましたが、今、行方不明です。
この関数は、順列の符号(偶置換?奇置換?)も返してくれるので、デターミネントを計算する時に浮動小数点を使う必要がなくなるので便利ですので、探しておきます。これを読めば、知っている人がいると思うので、期待できるでしょう。内部のロジックとしては、何種類かあるみたいで、高速のものが見つかれば幸いです。
No.9
- 回答日時:
たとえば C++ では「次の順列を求める」関数 std::next_permutation があるので, これの実装を流用すれば
再帰を使わないで全ての順列を列挙する
ことは可能です.
No.8
- 回答日時:
> できれば言語の仕様に特化したものでない方がいいのですが。
あるいはそのような機能がライブラリに含まれているような言語でない方がいいです。これは利用するプログラミング言語に例えばマッピングに類する機能が無いと非常に面倒くさい問題ですよ。
そもそも、このテの問題は元々、PrologとかLisp向きの問題であってCには向いていない。
Pythonは結構「丁度良い」ですが、それは現代的で内包表記を持ってるから、です。
Cでは解けなくはないだろうけど、恐らくC++のSTLを利用した方が「解きやすい」。C#ならもっとラクかも。
そういう性質の問題です。
def perm(lst):
def loop(lst, remain):
if remain == []:
return []
elif lst[1:] == []:
return [lst]
else:
return [[lst[0]] + l for l in perm(lst[1:])]\
+\
loop(lst[1:] + [lst[0]], remain[1:])
return loop(lst, lst)

No.7
- 回答日時:
A,B,C,Dの順列のケースです。
python3です。
再帰呼び出しをする方法
https://ideone.com/2ClmMo
再帰呼び出しをしない方法
https://ideone.com/kyq6kM
上記URLを参照ください。
尚、再帰呼び出しをする方法の場合は
arr = ["A","B","C","D"]の箇所を
arr = ["A","B","C","D","E"]
のようにすれば、A,B,C,D,Eの順列が求められます。
arr = ["A","B","C","D","E"・・・途中省略・・・,"Z"]
とすれば、アルファベット26文字も可能です。(完了までに莫大な時間がかかると思いますが・・・)

No.6
- 回答日時:
よこから失礼します。
No5の方へ
よろしければ、そのソースをこちらに張り付けていただけませんでしょうか。
こちらは、インデントが乱れませんので、そのままのソースが保たれます。
https://ideone.com/
1.添付図の左側の赤線で囲んだところで、言語を選択してください。
2.次に青線で囲んだところにソースを張り付けてください。(your code goes hereの文字を削除してからです)
3.Run(右側の赤線で囲んだところ)をクリックしてください。
4.実行結果表示され、ソースが登録されるので、そのURLをこのサイトに投稿してください。
そうすると、質問者の方も、そのソースをコピペできるので、確認がしやくすなるかと。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) DATEDIFで作成した勤務年数の並べ替えがうまくいかない 3 2023/07/31 17:09
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング言語に関してです。
-
今プログラミングを始めるなら...
-
MS-FortranとFortran90
-
学ぶべきプログラミング言語を...
-
C言語、C+、C++、C#の違い
-
どのプログラム言語がいいか
-
プログラミングの種類
-
ソフトウェアはどんな開発言語?
-
UNITY Float型の接尾辞fって
-
私の場合、C++とJavaのどちらの...
-
VHDLとVerilogの違いについて
-
SAP はプログラミング技術を必...
-
ネットワークゲームはどの言語...
-
ワードやphotoshopなどもCでつ...
-
C#のバージョンの変遷
-
VB.NETがDelphiより有利な点は
-
中学生がゲームを作りたいらし...
-
プログラムからアイコンファイ...
-
始めてのプログラミングは何の...
-
C言語とhtmlの違いを どな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムからアイコンファイ...
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLで文字タイプを数字...
-
UNITY Float型の接尾辞fって
-
HTMLとC++で、どんなホームペー...
-
Excel VBAで文字化けする (英語...
-
C++における継続行
-
TO_CHARで小数点以下がある場合...
-
VBScriptで引数を省略したい場合
-
VCとVC++
-
UWSCはどのプログラミング言語?
-
vbaとc言語の関連性について
-
パスカルケースの由来。
-
任天堂で使うプログラミング言...
-
Excelの開発言語ってなんですか?
-
C++ ってなんて読む?
-
VBSでDim、Private、Publicの違い
おすすめ情報