• UVa 11205


    称号:给你p一个LED在同一个显示器组成n一个。显示每个显示器上的符号(LED的p长度01串)

               问:用最少p几个比特位,您将能够这些区分n不同的符号。同样不能(其他位置上设置0处理)

    分析:搜索、枚举。

    从保留1位開始,一直搜索到p为。出现满足题意的解就退出,就可以。

                枚举採用位运算,提高效率。

    说明:寻找同样的时候,先排序。再推断相邻的就可以(n lg(n));也能够使用hash提高效率。

    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    
    using namespace std;
    
    int S[104];
    int P[104];
    
    int main()
    {
    	int T,N,M,a,b;
    	while ( ~scanf("%d",&T) )
    	for ( int t = 1 ; t <= T ; ++ t ) {
    		scanf("%d%d",&N,&M);
    		for ( int i = 0 ; i < M ; ++ i ) {
    			b = 0;
    			for ( int j = 0 ; j < N ; ++ j ) {
    				scanf("%d",&a);
    				b <<= 1;
    				b += a;
    			}
    			S[i] = b;
    		}
    		
    		for ( int k = 1 ; k <= N ; ++ k ) {
    			int xx,yy,comb = (1<<k)-1,flag = 0;  
    	        while ( comb < (1<<N) ) {  
    	            /* 计算当前状态相应的集合 */   
    	            for ( int i = 0 ; i < M ; ++ i )
    		            P[i] = S[i]&comb; 
    		        flag = 1;
    				sort( P, P+M );
    		        for ( int i = 1 ; i < M ; ++ i )
    		        	if ( P[i] == P[i-1] ) {
    						flag = 0; break;
    					}
    				if ( flag ) {
    					printf("%d
    ",k);
    					break;
    				}
    	            /* 位运算计算下一集合,依照顺序递增 */   
    	            xx = comb&-comb,yy = comb+xx;  
    	            comb = ((comb&~yy)/xx>>1)|yy;  
    	        }
    	        if ( flag ) break;
    		}
    	}
    	
    	return 0;  
    }
    

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    [洛谷P3674]小清新人渣的本愿
    [洛谷P2698][USACO12MAR]花盆Flowerpot
    [洛谷P4329][COCI2006-2007#1] Bond
    [洛谷P3203][HNOI2010]弹飞绵羊
    [洛谷P1407][国家集训队]稳定婚姻
    [洛谷P3388]【模板】割点(割顶)
    TX2_安装view_team
    tx2的一些系统命令
    tensorflow-cnnn-mnist
    mnist数据集tensorflow实现
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4677838.html
Copyright © 2020-2023  润新知