c语言测试芯片好坏
问题描述
有n个(2<n<20)芯片,好的或坏的,并且有比坏的芯片更多的已知的好的芯片。
每个芯片都可以用来测试其他芯片。当用一个好的芯片测试其他芯片时,它可以正确地给出被测芯片是好是坏。当用坏芯片测试其他芯片时,会随机给出好的或坏的测试结果(也就是说,这个结果与被测芯片的实际质量无关)。
给出所有芯片的测试结果,并询问哪些芯片是好的芯片。
输入格式
输入数据的第一个动作是一个整数n,它表示芯片的数量。
n+1的第二行是行为n*n表,每行有n个数据。表中的女生化妆每个数据都是0或1。第i行第j列(1<i,j<n)中的数据表示用i块芯片测试j块芯片时得到的测试结果。1代表好,0代表坏,i=j总是1(不代表芯片本身的测试结果)。芯片不能自我测试。
输出格式
按从小到大的顺序输出所有好芯片的数量。
样本输入
三
一百零一
010
一百零一
样本输出
十三
C语言参考答案:
包括:
#定义最大值20
In main()
{
int n,text[20][20],i,j,s;//s是坏芯片的数量
scanf(“%d”,&n);
如果(n>=2&&n<=20)
{
对于(i=0;i<n;i++)
{
对于(j=0;j<n;j++)
{
scanf(“%d”,&text[i][j]);
}
}
//清除坏芯片,留下好芯片
对于(j=0;j<n;j++)
{
S=0;
对于(i=0;i<n;i++)
{
S+=文本[I][J];
}
如果(S>N/2)
printf(“%d”,j+1);
}
}
返回0;
}
摘录:
以下两个结论是有用的。首先列出它们。
如果你随机抽取两片芯片进行测试,会有
1)如果结果为真,则两者均为真或假。
2)对于其他结果,至少有一个是错误的。
在任何偶数芯片中,如果好的芯片比坏的芯片多,那么所有的芯片都分为两组。根据抽屉原理,有
1)一组必须有两个好的芯片。
2)好芯片的数量必须大于坏芯片的数量。
测试流程
1)将芯片分为1和2、3和4组。2K-1和2K。如果我们互相测试,我们必须得到与真实组相同的结果。
2)保留与真实组相同的结果并丢弃其他组。好芯片组肯定比坏芯片组多。(因此,当只有两个或更多组为真时,它们必须为真,测试结束)
3)如果结果是真的,芯片将是好的或坏的,因此一半可以丢弃。从所有同一个真实组中,任意取出一个,丢弃另一个,组成一个新的测试组,继续两组或两组,直到同一真实组只有两个或一个测试,坚持到最后才是好的芯片。
解释:同一个真实的群体可能会变得奇怪。当为奇数数组时,选择任意一组(假定为A)和剩余一组进行测试A,如果测试结果A大于或等于芯片的一半,则A更好,测试结束。否则,A是一个坏芯片。如果A是一个好芯片,它一定是一个坏芯片。拆下其余零件后,将形成一个新的测试组,并将继续进行两个或两个组。
总的原则类似于淘金热。一开始有很多好的筹码。当我们取出芯片时,我们必须确保坏芯片的数量必须大于或等于好芯片的数量。这样,我们就可以确保剩余芯片中好芯片的数量大于坏芯片的数量。当组数为奇数时,超过一半的投票有效(同样有效,因为好大于坏,所以相等必须是好的)。
因为一次至少移除一半的芯片,最坏的情况是每次只移除一半的芯片,并以相等的比率减少。当有n个芯片时,测试次数为n+(n/2)+(n/4)…=2n。
特赦
c语言测试芯片好坏的更多相关文章
- 51单片机连接24C02-C语言测试代码
忙了一天多终于透彻了,自己写的不好使,用别人的逐步分析改成自己的,我写得非常简洁易懂. 我总结3点需要注意的地方 1.关闭非IIC通信器件,比如我的开发板SDA和SCL也连接了DS1302,造成干扰会 ...
- C语言--测试电脑存储模式(大端存储OR小端存储)
相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...
- Go语言测试代码
第一次学go语言,测试代码 package main import "fmt" var age int; const sex = 0 func init() { fmt.Print ...
- [译] Go语言测试进阶版建议与技巧
阅读本篇文章前,你最好已经知道如何写基本的单元测试.本篇文章共包含3个小建议,以及7个小技巧. 建议一,不要使用框架 Go语言自身已经有一个非常棒的测试框架,它允许你使用Go编写测试代码,不需要再额外 ...
- GO语言测试
Go语言的测试技术是相对低级的.它依赖一个 go test 测试命令和一组按照约定方式编写的 测试函数,测试命令可以运行这些测试函数.编写相对轻量级的纯测试代码是有效的,而且它很容易延伸到基准测试和示 ...
- 一套很有意思的C语言测试题目
网络上逛博客,发现了一套很有意思的测试题目: https://kobes.ca/ 大家有兴趣可以做一下,考一些关于C语言使用的细节: 中文翻译参考: https://www.cnblogs.com/l ...
- Go语言测试:testing
学习参考来源:https://www.liwenzhou.com/posts/Go/16_test/ go test工具 必须导入包: import "testing" go te ...
- 2017-2018-1 20155315 《信息安全系统设计基础》嵌入式C语言测试
Hours 要求 伪代码 提取Hours 提取时间地址 时间存放在(基址+2)的16位寄存器中,定义一个时间宏存放地址. #define Time_Addr 0xFFFFC0000 #define T ...
- Criterion - 一个简单可扩展的 C 语言测试框架
A dead-simple, yet extensible, C test framework. Philosophy Most test frameworks for C require a lot ...
随机推荐
- sqlserver创建链接服务器连接sqlserver脚本
示例: EXEC sp_addlinkedserver @server='MyLinkServer', --链接服务器别名 @srvproduct='', @provider='SQLOLEDB', ...
- SSD: Single Shot MultiBox Detector论文阅读摘要
论文链接: https://arxiv.org/pdf/1512.02325.pdf 代码下载: https://github.com/weiliu89/caffe/tree/ssd Abstract ...
- 【SR汇总】算法时间效率
1.SRCNN-0.39s SRCNN处理速度. 论文:Learning a Deep Convolutional Network forImage Super-Resolution 中,4.2节. ...
- python基础知识(函数)
创建函数 def 函数名(可以选参数): 可选参数 ''' ''' 用三引号括起来的注释 说明功能和参数信息 可选参数指定函数体 执行函数程序代码 创建一个空函数 def empty(): p ...
- Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...
- Leetcode之动态规划(DP)专题-121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)
Leetcode之动态规划(DP)专题-121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock) 股票问题: 121. 买卖股票的最佳时机 122. 买卖股票的最 ...
- C学习笔记-运算符
一些基本概念 数据对象:泛指数据在内存的存储区域 左值:表示可以被更改的数据对象 右值:能赋给左值的量 算数运算符 运算符 描述 实例 + 把两个操作数相加 a + b - 从第一个操作数中减去第二个 ...
- jQuery 相关插件
jQuery 是一个快速的,简洁的 javaScript 库,使用户能更方便地处理 HTML documents.events.实现动画效果,并且方便地为网站提供 AJAX 交互. jQuery 还有 ...
- [转帖]中芯国际14nm秋季量产 7nm工艺或在2020年底问世
中芯国际14nm秋季量产 7nm工艺或在2020年底问世 https://news.mydrivers.com/1/641/641087.htm 中芯正在发力.. 今年秋天 14nm两场 明年底 7n ...
- 查找担保圈-step6-对被包含过的组进行清理,只保留未被包含过的组
USE [test] GO /****** Object: StoredProcedure [dbo].[p04_get_groupno_cleared] Script Date: 2019/7/8 ...