天天看點

[藍橋杯][基礎練習VIP]晶片測試

題目連結:​​http://www.dotcpp.com/oj/problem1473.html​​ 這題還是很有意思的,題目最重要的一句話就是

有n(2≤n≤20)塊晶片,有好有壞,已知好晶片比壞晶片多。

是以無論怎麼樣,每一個晶片都能被正确地判斷是好晶片還是壞晶片。整道題就是算有多少個1。

之前做了一遍沒做出來,還有一個原因就是看錯了題目

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n;
  int a[25][25];
  int num[25];
  while(cin>>n)
  {
    for(int i=0;i<n;i++)
       for(int j=0;j<n;j++)
          cin>>a[i][j];
    for(int j=0;j<n;j++)  //清單示晶片的編号 
    {
      int ans=0;
      for(int i=0;i<n;i++)  //每一行表示的是晶片的測試結果 
          ans+=a[i][j];
      num[j]=ans;
    }
    bool flag=true;
    for(int i=0;i<n;i++)
    {
      if(num[i]>n/2)  //如果有超過一半的晶片認為這是好晶片,那這就是好晶片 
      {               //因為好晶片的數量是大于壞晶片的 
        if(flag)
        {
          flag=false;  cout<<i+1;
        }
        else cout<<" "<<i+1;
      }
    }
    cout<<endl;
  }
  return 0;
}