PAT (Advanced Level) 1014: 芯片测试

1014: 芯片测试

时间限制: 1 Sec  内存限制: 128 MB
 

题目描述



   基础练习  芯片测试    

时间限制:1.0s     内存限制:512.0MB 

      

问题描述 

  有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。 

  每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。 

  给出所有芯片的测试结果,问哪些芯片是好芯片。 

输入格式 

  输入数据第一行为一个整数n,表示芯片个数。 

  第二行到第n+1行为n*n的一张表,每行n个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i,  j≤n)的数据表示用第i块芯片测试第j块芯片时得到的测试结果,1表示好,0表示坏,i=j时一律为1(并不表示该芯片对本身的测试结果。芯片不能对本  身进行测试)。 

输出格式 

  按从小到大的顺序输出所有好芯片的编号 

样例输入 



1  0  1 

0  1  0 

1  0  1 

样例输出 

1  3 




 

输入

输出

#include 
#include 
#include 
#include 
#include 
#define MAX_SIZE 25
using namespace std;
 
vector cpus[MAX_SIZE]; // check;
set res;
queue check;
int n;
bool judge(int believe_index)
{
    while (!check.empty())
        check.pop();
    int i, j, temp;
    for (i = 0; i < n; i++)
    {
        check.push(i);
    }
    int t = 0;
    while (t < n)
    {
        j = check.size();
        for (i = 0; i < j; i++)
        {
            temp = check.front();
            check.pop();
            if (cpus[temp][t] == cpus[believe_index][t])
            {
                check.push(temp);
            }
        }
        t++;
    }
    if ((check.size()) >= (n - check.size()))
    {
        res.clear();
        j = check.size();
        for (i = 0; i < j; i++)
        {
            res.insert(check.front());
            check.pop();
        }
        return true;
    }
    return false;
}
int main()
{
    int temp;
    cin >> n;
    //input
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> temp;
            cpus[i].push_back(temp);
        }
    }
    //map
    bool isOk = false;
    for (int i = 0; i < n && !isOk; i++)
    {
        isOk = judge(i);
    }
    for (set::iterator it = res.begin(); it != res.end(); it++)
    {
        cout << (*it) + 1 << " ";
    }
    cout << endl;
    return 0;
}
/**************************************************************
    Problem: 1014
    User: 1151331112
    Language: C++
    Result: 正确
    Time:16 ms
    Memory:1556 kb
****************************************************************/

 

你可能感兴趣的:(pat)