UVA 11205 The broken pedometer ------二进制枚举
2015-08-01 17:17
393 查看
题意:
有p盏LED灯,开着表示1,关着表示0。用这7盏灯表示出10个不同的数,现在问最少可以用多少盏灯,就能够将这n个不同的数分辨出来
分析:
由于LED灯最多为15,用二进制枚举,一共就2^15种,再加上对每种情况进行判断,是否能够表示出不同的数,最多每组100次比较,所以时间复杂度为10^6左右,暴力可以完成
代码如下:
有p盏LED灯,开着表示1,关着表示0。用这7盏灯表示出10个不同的数,现在问最少可以用多少盏灯,就能够将这n个不同的数分辨出来
分析:
由于LED灯最多为15,用二进制枚举,一共就2^15种,再加上对每种情况进行判断,是否能够表示出不同的数,最多每组100次比较,所以时间复杂度为10^6左右,暴力可以完成
代码如下:
#include <iostream> #include <stdio.h> using namespace std; int n,a[105],p; void dfs() { int t=1<<p,mn=p+1; for(int i=0;i<t;i++) { int j=i; int ge=0; while(j>0) { ge+=j&1; j=j>>1; } if(ge>=mn) continue; int bj[33000]={0}; for(j=0;j<n;j++) { int k=a[j]&i; if(!bj[k]) bj[k]=1; else break; } if(j==n) mn=ge; } printf("%d\n",mn); return ; } int main() { int t,k; cin>>t; while(t--) { scanf("%d%d",&p,&n); for(int i=0;i<n;i++) { a[i]=0; for(int j=0;j<p;j++) { scanf("%d",&k); a[i]=a[i]*2+k; } } dfs(); } return 0; }
相关文章推荐
- 优秀程序员必须知道的32个算法,提高你的开发效率
- 个人总结的一些面试技巧
- Pixhawk---sdlog2应用详解
- 徐汉彬:Web系统大规模并发——电商秒杀与抢购(技术实现)
- mysql添加索引的方法,及max()函数的优化
- hdu5329(2015多校4)--Question for the Leader
- 我是一只百度贴吧的小爬虫
- [leedcode 147] Insertion Sort List
- Palindrome Number
- phalcon——访问控制列表ACL
- 两个栈实现队列
- PES分组字段
- Leetcode|Find Minimum in Rotated Sorted Array II(有重复元素的二分查找)
- WIN10安装与升级的方法
- Redis 事务
- Android基础之intent传值方法和传递大量数据方案
- CSS基础-21CSS定位-浮动的应用,实现瀑布流布局
- Shell 学习11 - Shell 字符串
- 10.通知(NSNotification)
- CodeForces_435B_C