#include <stdio.h>
#include <string.h>
#define person 4
#define true 1
#define false 0
// predilecations
char *maleTable[4][4][2] = {
{{"l", 0},{"l",0}, {"m", 0}, {"h", 0}},
{{"m", 0},{"m",0}, {"l", 0}, {"h", 0}},
{{"h", 0},{"h",0}, {"l", 0}, {"m", 0}},
{{"l", 0},{"m",0}, {"h", 0}, {"m", 0}}
};
char *femaleT[4][2] = {"mmlh","lmll","hhml","mlhh"};
int couple[4][4]={0};
int satisfied(int man)
{
int proposed = true; // proposed to all women
int isFree = true; // is free
for (int j = 0; j < 3; j++){
// if the man is free, continue to
// check if he hasn"t proposed to all women
if (couple[man][j] != false){
isFree = false;
break;
}
if (maleTable[man][j][1] == false) {
proposed = false;
break;
}
}
if ( isFree && !proposed) return false;
else return true;
}
int main(int argc, char *argv[])
{
if( argc == 1) printf("Default number of man is 4\n");
else if (argc == 2) printf("Number of man is %d\n", (int)*argv[1]);
else fprintf(stderr, "Usage: ./CG integer \n");
int i, j = 0;
nextMan: if ( i < 3) i++;
else return 0; // end if all men are checked
// the man isn"t free or has proposed to all women
if (satisfied(j)) goto nextMan;
else printf("Continue\n");
// find the women has highest favor
//
int woman = 1;
int man = 0;
for (; man < 3; man++){
printf("man is %d", man);
// no need to check this man
if ( man == i) continue;
// the woman isn't free
if ( couple[man][woman]) break;
// the woman is free
if( man == 3) {
couple[i][woman] = 1;
goto nextMan;
}
}
printf("Compare\n");
return 0;