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