安定結婚問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みけCAT

安定結婚問題

#1

投稿記事 by みけCAT » 15年前

こんにちは、みけCATです。
みんな高度な質問をされている中、このような初歩的な質問で申し訳ありません。
有名な「安定結婚問題」を解くソースコードを書いてみました。
このソースコードで解こうとしている問題は次の通りです。

安定結婚の問題(再構築版・精度注意)
男女がそれぞれn人います。
男女それぞれが、異性に対して好き度の順位を付けています。
このとき、男女一人ずつの「安定な」(後述)組み合わせを見つけてください。

「安定な」とは
たとえば、n=3で、男0の順位が0 1 2、女0の順位が0 2 1だとします。
このとき、男0と女1、男1と女2、男2と女0がペアを作ると、
男0は女1より女0の方が好き、女0は男2より男0の方が好きなので、
この二人が駆け落ちを起こします。
このとき、これを「安定でない」と言います。
すなわち、このようにならない組み合わせが「安定」です。

入力の形式
1行目にnが与えられます。
2~(n+1)行目までは、男(行数-2)の好き度の順位のn個の数字が空白区切りで与えられます。
(n+2)~(2n+2)行目までは、女(行数-2)の好き度の順位のn個の数字が空白区切りで与えられます。

出力の形式
(n+1)行目に男nと組み合わせる女の番号を出力します。
最後の行の後にも改行コードを入れます。

ソースコードと入出力例は添付しました。
これであっているか教えてくだされば幸いです。
よろしくお願いします。

ookami

Re:安定結婚問題

#2

投稿記事 by ookami » 15年前

拝見しようとしたのですが、

cファイルが二つあり、
それぞれにmain関数があるようですが、
solve.c だけ見たら良いですか?

コメントが全く無くて、
各変数の意味や、
代入される0とか1の意味がよく分かりません...
# maxdondakesuki は面白かったですw

あと、「あっている」のレベルによっては、
何パターンか試して、期待通りの結果が出ればおk、という場合もあると思いますが、
「メモリが足りないときはどうする」とか、
「数値以外が入力された時はどうする」とか、
そこまで含めて見るべきでしょうか?

みけCAT

Re:安定結婚問題

#3

投稿記事 by みけCAT » 15年前

qgen.cは検証用の問題生成プログラムです。
解いたプログラムはsolve.cであってます。

今回のsolve2.cにはコメントを追加しました。
失礼しました。

「あっている」のレベルについては、
情報オリンピックなどのプログラミングコンテストに提出して正解とみなされる程度でお願いします。
(わかりにくくてすいません)

ookami

Re:安定結婚問題

#4

投稿記事 by ookami » 15年前

情報オリンピックですか...

http://ja.wikipedia.org/wiki/国際情報オリンピック
> 各プログラムには実行時間やメモリの制限があり、その制限がアルゴリズム上の工夫を要し、問題を難しくする。
> 採点は入力データに対して、正しい結果を返すかどうかという、コンピュータによる自動採点で行われる。

とのことなので、「実行時間やメモリの制限」を明確にしないと、
「あっている」かどうか分かりませんね^^;

あと、
> 各問題は100点満点で採点
ともあるので、単に「正解」「不正解」でもないようです。


ということなので、
今回はソースを詳しく見れていません。
せっかくコメントをたくさん書いてもらったのに申し訳ない...

あと、
コメントの書き方については、(単に文法ではなくて。)
この辺が参考になるかもしれません。
http://homepage2.nifty.com/cat-chy/cp/h ... mment.html

/*stdio.hを取り込む*/
#include <stdio.h>

この辺は、さすがに私も分かります^^;

閉鎖

“C言語何でも質問掲示板” へ戻る