- 締切済み
C言語プログラミングの質問です
対戦試合の組み合わせを求めるプログラムを作りたいんですが、 例えばA~Dのグループがあって、 一日に一試合として、各対戦相手と必ず一回はホームで勝負し、また以下の日程ではそのチームはホームで試合できない A:1,4日目 B:4,5日目 C:2日目 D:2,3,5日目 とすると、組み合わせ左に書いてあるチームがホームとすると(例:A-B C-D ならAとCがホーム) 1日目:B-A,D-C 2日目:A-C,B-D 3日目:A-D,B-C 4日目:D-A,C-B 5日目:A-B,C-D 6日目:C-A,D-B のように試合が組める。また日程はグループ数*2-2の日数で実現できる。 この場合に、グループ数が増えた場合にも対応した日程の組み方のアルゴリズムがおもいつきません。 どなたか詳しい方ご教授おねがいします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hanpen_h
- ベストアンサー率0% (0/0)
回答No.2
こちらに同じ質問をさせていただきました
noname#140045
回答No.1
「総当たり」で答えが見つかるまで全パターンを試すのが、一番簡単な方法と言えるでしょう。 また、このような「総当たり」で処理する場合に、よく用いられる手法が「再帰呼び出し」です。 言葉で説明すれば、1つ1つ対戦を決めていき、もし行き詰まったらば、1つ戻してパターンを変え、それでも行き詰まったらば、2つ戻すような感じです。 「再帰呼び出し」は、スタックの概念(バックトラック)が分からないと難しいですが、この問題ならば再帰的呼び出しを使わなくてもできると思います。 もし、C言語のプログラムの提示を期待していたらゴメンなさい。