• 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循环语句合并的^_^

  • 相关阅读:
    接口和类的关系
    Java9+版本中,Interface的内容
    XSS简介
    上传漏洞(一)
    上传漏洞(二)
    初学Django
    ISCC:Please give me username and password!
    各种密码
    Debian 8.9 搭建wordpress个人博客
    网安相关书籍
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2339094.html
Copyright © 2020-2023  润新知