题目链接:http://www.dotcpp.com/oj/problem1473.html
这题还是很有意思的,题目最重要的一句话就是
有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。
所以无论怎么样,每一个芯片都能被正确地判断是好芯片还是坏芯片。整道题就是算有多少个1。
之前做了一遍没做出来,还有一个原因就是看错了题目
在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯片测试第j块芯片时得到的测试结果
AC代码如下:
#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;
}