UVA 11205 - The broken pedometer

来源:互联网 发布:八国集团中国知乎 编辑:程序博客网 时间:2024/05/16 19:27

题目大意:给你 n 个 LED 组成的相同的显示器 m 个,每个显示器上显示一个符号

               问最少使用 n 位中的几个位,就能区分这 m 个不同符号,均不相同即可

解题思路:枚举所有可能的方案,记录下最小的那个

#include <cstdio>#include <cstring>int main() {int t, vis[1<<15];scanf("%d", &t);while (t--) {int LED[105] = {0}, n, m, num, ans = 20;scanf("%d%d", &n, &m);for (int i = 0; i < m; ++i)for (int j = 0; j < n; ++j) {scanf("%d", &num);LED[i] = (LED[i] << 1) + num;}for (int i = 0; i < (1 << n); i++) {bool real = true;memset(vis, 0, sizeof(vis));for (int j = 0; j < m; j++)vis[LED[j] & i] ? real = false, j = m : vis[LED[j] & i] = 1;if (real) {int sum = 0;for (int j = 0; j < 15; j++)sum += ((i>>j) & 1);if (sum < ans) ans = sum;}}printf("%d\n", ans);}return 0;}


0 0
原创粉丝点击