芯片测试—动态规划算法

n片芯片,已知好芯片比坏芯片至少多1片。现在需要通过测试从中找出1片好芯片,测试方法如下:将2片芯片放到测试台上,2片芯片互相测试并报告测试结果(即好或者坏);其中,好芯片的报告是正确的,而坏芯片的报告是不可靠的。请在上述背景下解决下述问题,


根据好芯片至少比坏芯片多一片的条件,可以得出,在芯片数量大于3片的时候,通过将芯片互检的结果为一好一坏或者两个坏(其中必有至少一个坏芯片)那组芯片丢弃,只留下检测结果为两个好的芯片并随机丢弃一片,并根据芯片数量的奇偶性,将奇数的芯片剩余的一片未匹配的芯片与前面匹配完成并实现丢弃的芯片进行逐一匹配,以此实现缩小芯片数量并确保好芯片至少比坏芯片数量多一片的条件。当芯片数量只剩三片的时候,根据其条件只有两好一坏或者三个好的情况,做简单判断即可找出一片好芯片。//注释的为原先未优化的算法

import java.util.Scanner;


class Chip{//芯片类
	boolean quality;//标注好坏
	int position;//保存芯片初始化位置
	public Chip(boolean quality,int position){
		this.quality = quality;
		this.position = position;
	}


	public static void init(Chip chips[],int inits[]){
		for(int i=0;i3){
			int index = 0;
			boolean flag = false;
//			if(n%2!=0){//如果芯片数量是奇数块
//				int good = 0;
//				for(int i=0;in/2){//测试为好芯片
//					flag = true;//保存测试结果
//				}
//			}
			for(int i=0;i

你可能感兴趣的:(芯片测试—动态规划算法)