本帖最后由 red2020 于 2020-2-27 02:37 编辑
过于简单,不超过20行搞定- #include <stdio.h>
- int main ()
- {
- unsigned char matrix[128];
- matrix['a'] = 0x07; //二进制 0111 ,a说不是我,相当于其他人都有可能,所以除一号位其他位都标记为二进制1
- matrix['b'] = 0x02; //二进制 0010 ,b说是c,把三号位标记为二进制1
- matrix['c'] = 0x01; //二进制 0001 ,c说是d,把四号位标记为二进制1
- matrix['d'] = (~matrix['c'])&0x0F; //二进制 1110 ,d说c瞎说,相当c的矩阵值取反,~matrix['c']表示
-
- for(int j = 'a'; j <= 'd'; j++)
- {
- unsigned char judgeMark = 0x0F; //只取一个字节的后4位标记abcd做的状态
- for(int i = 'a'; i <= 'd'; i++)
- judgeMark &= (i == j)?~matrix[i]:matrix[i];
- if(judgeMark)
- printf("It's '%c'. :[%d,%d,%d,%d]\n", j, (judgeMark>>3)&1, (judgeMark>>2)&1, (judgeMark>>1)&1, judgeMark&1);
- }
- return 0;
- }
复制代码
|