用C++实现:芯片测试

问题描述

  有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(并不表示该芯片对本身的测试结果。芯片不能对本身进行测试)。

输出格式

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

样例输入

3
1 0 1
0 1 0
1 0 1

样例输出

1 3

思路:已知好芯片数目比坏芯片数目多,而且当遇到一个好的芯片的时候,用坏芯片去检测,有可能检验结果正确,有可能错误,而拿合格的芯片去检测,则检验结果一定是合格,所以如果在检验一个芯片的时候,其他芯片表示1的个数大于芯片总数的一半,就可以说明这个正在被检测的芯片是好的芯片。

 1 #include<iostream>
 2
 3 using namespace std;
 4
 5 class chips
 6 {
 7 public:
 8     int get_n()  //获取芯片个数
 9     {
10         cin >> n;
11         return n;
12     }
13
14     int get_all_chips()   //初始化原来所有芯片
15     {
16         for(int i=1;i<=n;i++)
17         {
18             for(int j=1;j<=n;j++)
19             {
20                 cin>>all_chips[i][j];
21             }
22         }
23         return 0;
24     }
25
26     int check_chips()  //筛选出合格的芯片
27     {
28         for(int i=1;i<=n;i++)
29         {
30             for(int j=1;j<=n;j++)
31             {
32                 if(all_chips[i][j]==1)
33                 {
34                     qualified_chips[j]++;
35                 }
36             }
37         }
38     }
39
40     int print_qualified_chips()  //输出函数
41     {
42         int flag=0;   //用flag来控制输出格式
43         for(int i=1;i<=n;i++)
44         {
45             if(qualified_chips[i]>n/2)
46             {
47                 if(flag==0)
48                 {
49                     cout << i;
50                     flag=1;
51                 }
52                 else
53                 {
54                     cout<<" "<<i;
55                 }
56             }
57         }
58     }
59 private:
60     int all_chips[21][21];   //所有芯片
61     int qualified_chips[21]={0};   //合格芯片
62     int n;
63 };
64
65 int main(void)
66 {
67     chips chip;
68     chip.get_n();
69     chip.get_all_chips();
70     chip.check_chips();
71     chip.print_qualified_chips();
72     return 0;
73 }

注意:题目要求i=j的时候不算数,所以在判断这个芯片是否符合条件的时候,用的>而不是>=,如果在判断的时候考虑进去,就加一个等号。

原文地址:https://www.cnblogs.com/guanrongda-KaguraSakura/p/12623797.html

时间: 2024-11-13 11:25:18

用C++实现:芯片测试的相关文章

基础练习 芯片测试

问题描述 有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多. 每个芯片都能用来测试其他芯片.用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏.而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关). 给出所有芯片的测试结果,问哪些芯片是好芯片. 输入格式 输入数据第一行为一个整数n,表示芯片个数. 第二行到第n+1行为n*n的一张表,每行n个数据.表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯片测试第

[BASIC-23] 芯片测试

基础练习 芯片测试 时间限制:1.0s   内存限制:512.0MB 问题描述 有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多. 每个芯片都能用来测试其他芯片.用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏.而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关). 给出所有芯片的测试结果,问哪些芯片是好芯片. 输入格式 输入数据第一行为一个整数n,表示芯片个数. 第二行到第n+1行为n*n的一张表,每行n个数据.表中的每个数据为0或1,在

芯片测试

一.写在前面 抽屉原理: 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面至少放两个苹果.这一现象就是我们所说的“抽屉原理”. 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素.” 抽屉原理有时也被称为鸽巢原理.它是组合数学中一个重要的原理. 第一抽屉原理 原理1: 把多于n+1个的物体放到n个抽屉里,则至少有一个抽屉里的东西不少于两件.   证明(反证法

基础训练 芯片测试

芯片测试 /*************根据题意可知,如果是坏芯片则对应的列中除了对角线位置处所有的0的个数一定大于1的个数,又非好即坏************/ #include<iostream> #include<vector> using namespace std; int main(){ int n, flag=0; cin>>n; vector<vector<int> > vi(n+1, vector<int>(n+1,

SRAM芯片测试

完成SRAM芯片的测试,需要设计测试电路板.测试电路板主要提供测试接口和电源.芯片的控制信号和数据信号由红色飓风II-Xilinx FPGA 开发板提供,使用ISE13.2 软件建立测试工程,编写Verilog 测试程序(主要包括按照时序提供分频后的测试时钟.数据信号和控制信号),通过JTAG 下载到FPGA 的PROM 中,重新上电进行测试,通过RIGOL DS1102CA 双通道示波器捕捉信号. 将示波器的通道1连接到写使能信号,通道2连接到数据端D7.如图1 所示,上方的波形为通道1接收的

蓝桥杯 BASIC 23 芯片测试(基础、统计、数组)

[思路]:需要用手写一下.如下图一目了然. [AC代码]: #include <iostream> #include <algorithm> #include <iomanip> #include <cstdio> #include <cstring> using namespace std; #define MAX 20+2 int test[MAX][MAX]; char str[MAX][MAX]; int cnt[MAX]; int ma

J1020、智能卡芯片制备工艺配方技术

1 01807813.3 薄片智能卡制造方法2 03112628.6 智能卡小额金融数据交换的方法及装置3 02125399.4 VLSI用的蒙格玛丽模乘算法及智能卡模乘器的VLSI结构4 02102502.9 用于从计算机对智能卡执行操作的方法5 02111878.7 紫外线胶加盖板封装智能卡用CPU模块的方法6 02111880.9 紫外线胶筑坝封装智能卡用CPU模块的方法7 02112898.7 预收费智能卡污(废)水排放计量自控终端8 01814140.4 智能卡和识别设备等的测试系统9

阿里AI芯片:12nm工艺、709平方毫米大核心

导读 在传统的 X86.GPU 等芯片领域,国内公司已经落后了,但在 AI 芯片上,国内半导体行业有望赶超,阿里巴巴旗下的平头哥去年就推出了性能堪比 GPU 的 AI 芯片——含光 800. 含光出自<列子·汤问>篇有“上古三剑”一章,寓意含而不露,光而不耀,象征含光 800 无形却强劲的算力. 含光 800 是一款 AI 芯片,偏重推理.据介绍,1 颗含光 800 的算力相当于 10 颗 GPU,目前基于含光 800 的 AI 云服务已在阿里云上线. 官方数据显示,含光 800 在芯片测试标

[算法导论 Ch9 中位数和顺序统计量] Selection in O(n)

1. 寻找第k大(小)的数 假设数据存储在数组a[1..n]中 首先,寻找一个数组中最大或者最小的数,因为最大(小)的数一定要比其他所有的数大(小),因此至少要比较完所有的pair才能确定,所以时间复杂度在O(n).那么寻找第k大(小)呢? 比较直观的,就是对数组中国所有的数据先进行排序,在我们这种渣渣的计算机入门选手而言,可选的有QuickSort,MergeSort和HeapSort,甚至是ShellSort等一些比较高级的方法啊...一般的代价都在O(n*logn)上,然后直接取出即可.