#include<stdio.h>
#include<conio.h>
main()
{
int i,j,k,x,y,n=4,a[]={1,2,3,4}; //n is the length of the array
for(i=0;i<n;i++)
{
for(k=0;k<(n-2);k++)
{
for(j=(n-1-k);j>=1;j--)
{
y=a[j];
a[j]=a[j-1];
a[j-1]=y;
for(x=0;x<n;x++)
{
printf("%d",a[x]);
}
printf("\t");
}
}
}
getch();
}
私はこの順列に
答えて
変化を計算するために私のプログラムのバグを把握することはできません。これに
for(k=0;k<(n-2);k++)
:
for(k=0;k<(n-1);k++)
また、より説明変数名を使用してみてください。..
ではなく、20個の置換が得られます。 24の結果は24の正しい結果を意味しません。 –
正確に。アルゴリズムは明らかに間違っています。なぜなら、明らかに 'n! '時間を出力しないからです。 – avakar
私は質問者のアルゴリズムが正しくないことを知っていますが、彼は正確さを求めていませんでした。彼は私にした24個の置換の代わりに20個の "バグ"を発見するように私に求めていました。私が知っている限り、彼はその特定のアルゴリズムを使いたいという非常に良い理由があります。 –
いくつかの追加資料(私は少し酔っている、私はおそらくこれを明日編集し直す必要があるので、塩の粒でそれを取る):
クヌースとセジウィックは共に以前の順列をカバーしていました。あなたが持っているn個http://www.princeton.edu/~rblee/ELE572Papers/p137-sedgewick.pdf
nのアイテム:
はを見てください!順列、したがって13個のアイテムにはすでに6 227 020 800の順列があります。だから、大きなセットのアイテムのすべての順列を作成することは、かなり速く不可能になります。
並べ替え、ランキング/非ランキング、増分変更メソッドを作成するための基本的なアルゴリズムは2組あります。
ランキング/ランキングには2つの方法があり、ランク付けされていません。
ランクでは、genereration orderにおける順列の位置が得られます。
Unrankは整数mにある置換を与えます。0> = m < = n!とnは順列を作成するアイテムの量です。
これは、次のような例さまざまな場合に便利です:ランダムな順列を作成
(あなただけの0からnまでの乱数を作成し、(乱数)unrankを呼んで!)と位置乱数で順列を取得します。
次の順列を得る:あなたは順列pを持ち、Rank(p)を呼び出してUnrank(rank + 1)を呼び出します。
インクリメンタル変更方法:
これらの基本的スワッピングを介して動作し、ランキング/ unrankingよりも効率的です:ウィキペディアから
、順不同世代:
function permutation(k, s) {
for j = 2 to length(s) {
swap s[(k mod j) + 1] with s[j]; // note that our array is indexed starting at 1
k := k/j; // integer division cuts off the remainder
}
return s;
}
私はポイントを知りませんあなたのプログラムのですが、std :: next_permutationの実装を読むことを試みるかもしれません。ループを使ってすべての順列を生成するのは幾分難しく、再帰を使うほうが好きです。
+1、私はCの初心者がイテレータを使ったテンプレートのC++コードを解析するのに満足しているとは思っていません。しかし、 'next_permutation'についての素晴らしい記事があります:http://marknelson.us/2002/03/01/next-permutation/ – avakar
- 1. 手順は、私は、このリンクの手順に従っていXcodeの5
- 2. MSSQLの手順ではなく、私はこのMSSQL手順持っ
- 3. MATCH()節の列の順序は重要ですか?ここで
- 4. のOracle SQL - このテーブルで動作します私は、この手順を作成した手順に
- 5. 私はsas9.1に、この手順を実行するsas9.1
- 6. ハスケル:順列の順
- 7. は私のオブジェクトは、私は、この不変の順位オブジェクトを実装した
- 8. SQLAlchemyの:チェーン内の列によって順序I'vは、このようなモデルを得た私のアプリでは
- 9. 私の順列アルゴリズムは、すべての順列について私に同じ結果を与えるのはなぜですか?
- 10. PLSQLは:私はこのような手順を持って
- 11. 私はこのビデオの手順を以下のよCodeIgniterの
- 12. は、私は私のパッケージ、私は、この手順を持つPL/SQL関数にパラメータとして
- 13. 昇順リスト順列
- 14. SQL:私は店の手順でこのクエリを持って
- 15. 順列は反復
- 16. リストボックスの文字列アイテムを昇順または降順にソート
- 17. ルビーオンレール:どのように私は順序
- 18. 変更列の順序と現在、私はこのようになりますデスクトップ用のカラム持っ
- 19. 私は降順で並べられた行グラフを持っています。順序を昇順に変更したいこれは私のコードです:
- 20. アルファベット順ではなくアルファベット順の配列順に並べ替え
- 21. 列の順番はR
- 22. PHP:私は次の配列持つ順不同HTMLリスト
- 23. 私の順列コードは毎回nPnを出力しますか?
- 24. が、私は、この手順を持って
- 25. 私はこの手順を利用したいと思いラムダ
- 26. 画像は、私はこれが来てい順次
- 27. データ変更はどこですか? - Javaでの順列
- 28. 行/列順列
- 29. ここ順序
- 30. は、私はここに、以下の配列持つPHP
あなたの質問を投稿したときに何かが間違っていたと思います。書式設定が乱れ、コードがありません。あなたの質問を解決できますか? – Lucas
ええ、私はそれを修正したと思います –
バグは何ですか? – Toad