zoukankan      html  css  js  c++  java
  • [poj3740]Easy Finding_状态压缩_dfs

    Easy Finding poj-3470

        题目大意:给你一个01矩阵,问能否选出一些行,使得这些行所新组成的01矩阵每列中有且只有1个1。

        注释:1<=行数<=16,1<=列数<=300.

          想法:对于一个单独的01矩阵来讲,我们可以用一个数表示其中的每一行,然后暴力枚举每一行选取情况即可。

        最后,附上丑陋的代码... ...

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int c[320];
    bool flag;
    int main()
    {
    	int n,m;
    	while(~scanf("%d%d",&n,&m))
    	{
    		memset(c,0,sizeof(c));
    		flag=0;
    		for(int i=1;i<=n;i++)
    		{
    			for(int j=1;j<=m;j++)
    			{
    				int a;
    				scanf("%d",&a);
    				c[j]+=(a<<(i-1));
    			}
    		}
    		for(int s=0;s<(1<<n);s++)
    		{
    			for(int j=1;j<=m;j++)
    			{
    				int middle;
    				middle=s&c[j];
    				if(middle!=0 && (middle&(middle-1))==0)
    				{
    					if(j==m)
    						flag=1;
    					else continue;
    				}
    				else break;
    			}
    			if(flag)
    				break;
    		}
    		if(flag) printf("Yes, I found it
    ");
    		else printf("It is impossible
    ");
    	}
    	return 0;
    }
    

         小结:位运算的优先级是滞后的,但是sublime里会吹warning,如果利用优先级的话。

  • 相关阅读:
    JNDI使用小记
    Python基础之字符串
    openstack装B之路http协议
    openstack装B之路keystone
    Python基础之列表
    openstack装B之路Keystone部署以及操作
    openstack装B之路网关协议
    纵表与横表互转的SQL
    Asp.Net请求管道中的19个事件
    jquery ajax post get
  • 原文地址:https://www.cnblogs.com/ShuraK/p/8599147.html
Copyright © 2011-2022 走看看