C/C++の宿題を片付けます 59代目
■ このスレッドは過去ログ倉庫に格納されています
0194デフォルトの名無しさん
2006/01/28(土) 21:26:12[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):順列 (0, 1, 2) に対して (1, 2, 0) や (2, 0, 1) の様に,もとの順列と数字がすべて異なる位置にある
順列を撹乱順列(derangement)と呼ぶ.順列 (0, 1, 2, 3, 4) に対するすべての撹乱順列を求め表示し,その個数を表示するプログラムを作りなさい.
ヒント
順列を全て列挙し、列挙した要素が撹乱順列の条件を満たすかをチェックするとよい。 実現の方法は2通りある。
1. 要素の重複を許して順列を列挙する。(5*5*5*5*5 = 3125通りのチェック)
この場合、撹乱順列のチェックと、要素のダブりがないかのチェックを両方行う必要がある。
2. 要素の重複を許さずに順列を列挙する。(5*4*3*2*1 = 120通りのチェック)
この場合、撹乱順列のチェックだけでよい。
注意
実行例では結果を省略しているが、レポートには実行結果を省略せず載せること。
実行結果
(1, 0, 3, 4, 2)
(1, 0, 4, 2, 3)
(1, 2, 0, 4, 3)
(略)
(4, 3, 0, 2, 1)
(4, 3, 1, 0, 2)
(4, 3, 1, 2, 0)
number of derangement for 5 = 44
$
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: [2006年1月31日]
[5] その他の制限: include<stdio.h>のみで。
時間がないため助けてください。
■ このスレッドは過去ログ倉庫に格納されています