码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 11025 The broken pedometer【枚举子集】

时间:2015-05-03 00:42:24      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

题意:给出一个矩阵,这个矩阵由n个数的二进制表示,p表示用p位二进制来表示的一个数 问最少用多少列就能将这n个数区分开

 

 

枚举子集,然后统计每一种子集用了多少列,维护一个最小值

b[i]==1代表的是选择了这一列

技术分享
 1 #include<iostream>  
 2 #include<cstdio>  
 3 #include<cstring> 
 4 #include <cmath> 
 5 #include<stack>
 6 #include<vector>
 7 #include<map> 
 8 #include<set>
 9 #include<queue> 
10 #include<algorithm>  
11 using namespace std;
12 
13 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)
14 
15 typedef long long LL;
16 const int INF = (1<<30)-1;
17 const int mod=1000000007;
18 const int maxn=100005;
19 
20 int b[maxn],a[505][505];
21 int minn,n,p;
22 
23 void solve(){
24     for(int i=0;i<n-1;i++){        
25         for(int j=i+1;j<n;j++){
26             int flag=0;            
27             for(int k=0;k<p;k++)
28                 if(b[k]&&a[i][k]!=a[j][k]) flag=1;//b[k]==1代表的是选择了这一列 
29 
30             if(flag==0) return;
31         }        
32     }
33     
34     int ans=0;
35     for(int i=0;i<p;i++)
36     if(b[i]) ans++;
37     
38 //    printf("ans=%d\n",ans);
39 //    printf("minn=%d\n",minn);
40     minn=min(minn,ans);
41 }
42 
43 void subset(int cur){
44     if(cur==p){
45         solve();
46         return;
47     }
48     b[cur]=1;
49     subset(cur+1);
50     b[cur]=0;
51     subset(cur+1);    
52 } 
53 
54 int main(){
55 //    freopen("in.txt","r",stdin);
56 //    freopen("out.txt","w",stdout);
57     int T;
58     cin>>T;
59         while(T--){
60             cin>>p>>n;
61             for(int i=0;i<n;i++)
62              for(int j=0;j<p;j++)
63              cin>>a[i][j];
64              
65              minn=p;
66              subset(0);
67              printf("%d\n",minn);
68         }
69     return 0;    
70 }
View Code

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

自己做的时候题目都没有读懂----sad------------

加油加油--

UVa 11025 The broken pedometer【枚举子集】

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/4472762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!