用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的时候不算数,所以在判断这个芯片是否符合条件的时候,用的>而不是>=,如果在判断的时候考虑进去,就加一个等号。


__EOF__

本文作者神楽桜KaguraSakura
本文链接https://www.cnblogs.com/KaguraSakura/p/12623797.html
关于博主:hello~好久不见,喜欢的话点个赞吧
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   神楽桜KaguraSakura  阅读(1023)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示