uva 11205 The broken pedometer
来源:互联网 发布:基德级与现代级 知乎 编辑:程序博客网 时间:2024/05/21 11:23
dfs递归枚举所有的子集,检验每一个子集是否能够使得每一个数字的编码不同,如果发现这样的子集,就统计其中1的个数,将结果更新为当前结果和前面统计出的1的个数的较小值,递归枚举结束后,得到的全局变量result就是最后的结果。
#include <stdio.h>#include <math.h>#include <vector>#include <set>using namespace std;vector<int> original_code;int arr[16];int result;void dfs(int len, int cur){if(cur == len){int mask, i, j, new_code;set<int> last_code;int one_count;mask = 0;for(i=0; i<len; i++){if(arr[i])mask += (int)pow(2.0, i);}last_code.clear();for(i=0; i<original_code.size(); i++){new_code = mask&original_code[i];if(last_code.find(new_code) != last_code.end())break;elselast_code.insert(new_code);}if(i == original_code.size()){//统计1的个数one_count = 0;for(j=0; j<len; j++)if(arr[j])one_count++;if(one_count < result)result = one_count;}return;}arr[cur] = 0;dfs(len, cur+1);arr[cur] = 1;dfs(len, cur+1);}void func(int m, int n){double r;//递归生成子集result = m;dfs(m, 0);printf("%d\n", result);}int main(void){int m, n;int data, sum;int i, j;int N;//freopen("input.dat", "r", stdin);scanf("%d", &N);while(N--){scanf("%d %d", &m, &n);original_code.clear();for(i=1; i<=n; i++){sum = 0;for(j=0; j<m; j++){scanf("%d", &data);if(data) sum += (int)pow(2.0, j);}original_code.push_back(sum);}func(m, n);}return 0;}
- UVa 11205 The broken pedometer
- uva 11205 - The broken pedometer
- uva 11205 - The broken pedometer
- UVa 11205 - The broken pedometer
- uva 11205 - The broken pedometer
- UVa 11205 - The broken pedometer
- UVA 11205 The broken pedometer
- uva 11205 The Broken Pedometer
- uva 11205 The broken pedometer
- uva 11205 - The broken pedometer
- UVa 11205 - The broken pedometer
- UVA 11205 The broken pedometer
- UVa 11205 - The broken pedometer
- UVA 11205 - The broken pedometer
- UVa-11205-The broken pedometer
- UVA - 11205 The broken pedometer
- UVA - 11205 The broken pedometer
- uva 11205 The broken pedometer
- hdu 1222 Wolf and Rabbit 数论,线性同余方程的一般运用
- js中字符替换函数String.replace()使用技巧
- 设计技巧27:代理 Proxy 为另外一个对象提供替身或者站位符以控制对对象的访问
- hdu 3342 拓扑排序 水
- [剑指offer][面试题28]字符串的排列
- uva 11205 The broken pedometer
- Lync 2010升级到2013 之部署前端服务器!
- 理解Oracle反向索引
- JavaScript可否多线程? 深入理解JavaScript定时机制
- 设计技巧28: 非阻塞后台线程的通知
- curl在window下的配置
- 设计模式(c++)笔记之五(Prototype 模式)
- 关于S50卡密钥A和密钥B
- 设计技巧29: 独立后台线程顺序执行