zoukankan      html  css  js  c++  java
  • uva 11205

    英文一大串,磨死人啊~~~

    题目大致是想说:找到一个P位的二进制数和给的二进制数与,得到的n个二进制数是不同的,但是呢,这个p位的二进制数1的个数要最小就是了(自己的理解)

    代码如下:

    //#define LOCAL
    #include "stdio.h"
    #include "string.h"

    int p[150];
    int s[150][20];
    int sf[150];

    int differ(int *p,int m)
    {
     int i,j;
     for(i=0;i<m;i++)
     {
      for(j=i+1;j<m;j++)
      {
       if(p[i]==p[j])
        return 0;
      }
     }
     return 1;
    }

    int main()
    {
    #ifdef LOCAL
     freopen("input.in","r",stdin);
     freopen("output.out","w",stdout);
    #endif
     int t;
     int n,m,count,min;
     int i,j,k,v;
     
     scanf("%d",&t);
     while(t--)
     {
      scanf("%d%d",&n,&m);
      count=0;
      min=20;
      
      memset(s,0,sizeof(s));
      memset(sf,0,sizeof(sf));
      
      for(i=0;i<m;i++)
      {
       for(j=0;j<n;j++)
       {
        scanf("%d",&s[i][j]);
       }
      }
      
      for(j=0;j<m;j++)
      {
       for(k=0;k<n;k++)
       {
        sf[j]+=(s[j][k]<<(n-k-1));
       }
      }
      
      
      for(i=1;i<(1<<n);i++)
      {
                count =0;
       memset(p,0,sizeof(p));
       
       for(j=0;j<m;j++)
       {
        p[j]=(i&sf[j]);
       }
       
       if(differ(p,m))
       {
        for(j=0;j<n;j++)
        {
         if((i>>j)&1)
          count++;
        }
        if(count<min)
         min=count;
       }
      }
      
      
      
      printf("%d\n",min);
     }
     
     return 0;
    }

    其实可以省掉一个数组s的,将前面两个双for循环语句合并的^_^

  • 相关阅读:
    greybox关闭/刷新父窗口
    C# 获取文件编码
    框架页,URL中文参数乱码
    用来代替SQLSERVERAGENT的VBS脚本。
    jQuery的radio,checkbox,select操作
    mssql 的sp_help好难看
    如何判断网通、电信、铁通IP地址分配段
    IE8取不到 select 的option值
    如何识别当前的 SQL Server 版本号以及对应的产品级别
    控诉我的电脑
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2339094.html
Copyright © 2011-2022 走看看