2 분 입문 칩 검사
프로젝트 주소: github / DivideAndConquer / TestChip /
제목
n 개의 칩 이 있 는데, 그 중 좋 은 칩 이 나 쁜 칩 보다 적어도 한 조각 더 많다 는 것 을 이미 알 고 있 으 며, 지금 은 테스트 를 통 해 좋 은 칩 을 찾 아야 한다.테스트 방법 은 두 개의 칩 을 시험대 에 올 려 놓 고 두 개의 칩 을 서로 테스트 하고 테스트 결 과 를 보고 하 는 것 이다.칩 의 보고 가 정확 하 다 고 가정 하면 나 쁜 칩 의 보 고 는 믿 을 수 없다.하나의 알고리즘 을 설계 하여 최소한 의 테스트 횟수 를 사용 하여 좋 은 칩 을 찾아내다.
코드 디자인
#include
#include
using namespace std;
#define TEST_NUM 11
//
struct Chip {
int id;
bool isok;
};
// ,ans1 ,ans2
struct Ans {
bool ans1;
bool ans2;
};
//
void Init(vector *initVector) {
for (int i = 0; i < TEST_NUM; i++) {
Chip testChip;
testChip.id = i;
if (i % 2 == 1) {
testChip.isok = false;
} else {
testChip.isok = true;
}
initVector->push_back(testChip);
}
}
//
void Show(vector showVector) {
for (int i = 0; i < showVector.size(); i++) {
cout << showVector[i].id << "|" << showVector[i].isok << endl;
}
}
// , bool
Ans CheckChip(Chip c1, Chip c2) {
Ans ans;
if (c1.isok) {
ans.ans2 = c2.isok;
} else {
ans.ans2 = rand() % 2;
}
if (c2.isok) {
ans.ans1 = c1.isok;
} else {
ans.ans1 = rand() % 2;
}
return ans;
}
int main() {
// ,
vector testVector[2];
//
Init(&(testVector[0]));
//
int ansPos;
//
for (int i = 0;; i++) {
//
int pos = i % 2;
int otherPos = (i + 1) % 2;
//
for (int j = 0; j < testVector[pos].size(); j = j + 2) {
// ,
if (j == testVector[pos].size() - 1) {
testVector[otherPos].push_back(testVector[pos][j]);
} else {
//
Ans ans = CheckChip(testVector[pos][j], testVector[pos][j + 1]);
if (ans.ans1 && ans.ans2) {
testVector[otherPos].push_back(testVector[pos][j]);
}
}
}
//
testVector[pos].clear();
//
if (testVector[otherPos].size() <= 1) {
ansPos = otherPos;
break;
}
}
cout << "ans" << endl;
Show(testVector[ansPos]);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.