zoukankan      html  css  js  c++  java
  • UVa 11025 The broken pedometer【枚举子集】

    题意:给出一个矩阵,这个矩阵由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
    ",ans);
    39 //    printf("minn=%d
    ",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
    ",minn);
    68         }
    69     return 0;    
    70 }
    View Code

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

    加油加油--

  • 相关阅读:
    类和对象
    数组
    循环结构
    选择结构
    变量,数据类型和运算符
    什么是JDBC,JDBC的使用
    重拾JavaScript
    git使用日记
    Base包
    RabbitMQ(windows环境)下载与安装
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4472762.html
Copyright © 2011-2022 走看看