您的位置:首页 > 其它

UVA 11205 - The broken pedometer

2014-08-16 16:36 405 查看
题目大意:给你 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: