チップテスト-動的計画アルゴリズム
1458 ワード
n枚のチップがあり、良いチップは悪いチップより少なくとも1枚多いことが知られている.今、テストを通じて中から1枚の良いチップを探し出す必要があります.テスト方法は以下の通りです.2枚のチップをテスト台に置いて、2枚のチップは互いにテストして、テスト結果(つまり良いか悪いか)を報告します.その中で、良いチップの報告は正しいが、悪いチップの報告は信頼できない.上記の背景の下で下記の問題を解決してください.
良いチップが少なくとも悪いチップより1枚多いという条件から、チップ数が3枚より大きい場合には、チップ相互検出の結果が1つの良い1つまたは2つの悪い(少なくとも1つの悪いチップが必要である)であるチップセットを破棄することによって、検出結果が2つの良いチップのみを残してランダムに1枚を破棄し、チップ数のパリティに基づいて、奇数のチップの残りの1枚の未整合チップを、前のマッチングが完了し、廃棄されたチップと逐一マッチングし、チップの数を縮小し、良いチップが少なくとも悪いチップの数より1枚多いことを確保する条件を実現する.チップの数が3枚しか残っていない場合、その条件によって2つの良いものと悪いもの、または3つの良いものしかない場合、簡単な判断で良いチップを見つけることができます.//注記元の最適化されていないアルゴリズム
良いチップが少なくとも悪いチップより1枚多いという条件から、チップ数が3枚より大きい場合には、チップ相互検出の結果が1つの良い1つまたは2つの悪い(少なくとも1つの悪いチップが必要である)であるチップセットを破棄することによって、検出結果が2つの良いチップのみを残してランダムに1枚を破棄し、チップ数のパリティに基づいて、奇数のチップの残りの1枚の未整合チップを、前のマッチングが完了し、廃棄されたチップと逐一マッチングし、チップの数を縮小し、良いチップが少なくとも悪いチップの数より1枚多いことを確保する条件を実現する.チップの数が3枚しか残っていない場合、その条件によって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