求关于逻辑问题的好算法
题目:突然有一天,你忘记了今天是星期几,中国人凑吉利,所以你找来了八个人,让他们每人说两句话,第一句为今天星期几,另一句为今天不是星期几,并且两句中一句真,一句假。可能第一句是真,也可能第二句是真。最后请你确定今天是星期几,并输出。求大家就这道题分享一些好算法。
2015-02-26 16:17

2015-02-26 16:19
2015-02-27 23:23
程序代码:#include "stdio.h"
int check (int person, int max);
void print_result (char* result);
char data[8][2] = {{1,2}, {2,6}, {3,4}, {5,1}, {7,7}, {1,5}, {1,6}, {4,2}};
char result[9] = {0};
int main (void)
{
int person;
for (person=1; person<=8; person++)
{
if (person == check (person, 8))
{
result[0]++;
result[result[0]] = data[person-1][0];
}
}
print_result (result);
return 0;
}
int check (int person, int max)
{
int date = data[person-1][0];
int i;
for (i=0; i<max; i++)
{
if ((date != data[i][0]) && (date == data[i][1]))
{
return 0;
}
}
return person;
}
void print_result (char* result)
{
int i;
for (i=1; i<=result[0]; i++)
{
printf ("%d ", result[i]);
}
}

2015-02-28 16:30