누가 도둑 이 야?
갑: "을 은 훔 치지 않 았 어. 딩 이 훔 친 거 야."
나 는 "나 는 훔 치지 않 았 다. 병 이 훔 쳤 다." 라 고 말 했다.
병: "갑 은 훔 치지 않 았 어. 을 이 훔 쳤 어."
딩 은 "나 는 훔 치지 않 았 다." 라 고 말 했다.
이 네 사람의 대답 에 따라 누가 절도범 인지 판단 하 세 요.
* 문제 분석 및 알고리즘 디자인
A, B, C, D 가 각각 네 사람 을 대표 한다 고 가정 하면 변수의 값 은 1 로 이 사람 이 도둑 이라는 것 을 의미한다.
제목 에서 알 수 있 듯 이 네 사람 중 한 명 만 도둑 이 고 이 네 사람 중 한 명 은 진실 을 말 하거나 거짓말 을 했 기 때문에 갑, 을, 병 세 사람 은 모두 두 마디 말 을 했다. "X 는 훔 치지 않 았 고 X 는 훔 쳤 다." 그래서 이 사람 이 거짓말 을 하 든 말 든 그 가 언급 한 두 사람 중 한 명 은 도둑 이다.그러므로 조건 표현 식 을 열거 할 때 누가 거짓말 을 하고 누가 진실 을 말 하 는 지 에 관심 을 두 지 않 아 도 된다.이렇게 하면 다음 조건 식 을 열거 할 수 있 습 니 다.
갑: "을 은 훔 치지 않 았 어. 딩 이 훔 쳤 어."B+D=1
나: "훔 치지 않 았 어 요. 병 이 훔 쳤 어 요." B + C = 1
병: "갑 은 훔 치지 않 았 어. 을 이 훔 쳤 어." A + B = 1
딩: "훔 치지 않 았 어 요." A + B + C + D = 1
그 중에서 정 씨 는 한 마디 만 했 을 뿐 진 위 를 판단 할 수 없 었 고 표현 식 은 네 사람 중 한 명 만 도둑 이라는 조건 을 나 타 냈 다.
* 프로그램 설명 및 설명
#include
void main()
{int i,j,a[4];
for(i=0;i<4;i++)
/ / i 명 만 도둑 이 라 고 가정
{for(j=0;j<4;j++)
/ / i 차 가설 에서 i 번 째 사람 을 도둑 이 라 고 가정 하고 a [i] 를 1 로 설정 하고 나머지 는 0 이다.
{if(j==i)a[j]=1;
else a[j]=0;}
if(a[3]+a[1]==1&&a[1]+a[2]==1&&a[0]+a[1]==1)
/ / 조건 의 성립 여 부 를 판단
{printf("The thief is ");
/ / 성립
for(j=0;j<=3;j++)
/ / 출력 계산 결과
{if(a[j])printf("%c.",j+'A');
}
printf("");}}}
*/
필 자 는 스스로 일반적인 방법 을 생각 했다.
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
int main()
{int a[4];//
for(int k1=0;k1<2;k1++)
{if(k1)
{ a[1]=0; a[3]=1;}//
else { a[1]=1; a[3]=0; }
for(int k2=0;k2<2;k2++)
{if(k2&&k1)
{a[1]=0; a[2]=1;}// , ,
else if(!k1&&!k2) {a[1]=1; a[2]=0;}
else continue;
for(int k3=0;k3<2;k3++)
{if(k3&&(!k1||!k2))// ,
{a[0]=0; a[1]=1;}
else if(!k3&&k1&&k2){a[0]=1; a[1]=0; }
else continue;
for(int k4=0;k4<2;k4++)
{if(k4&&!k1)
a[3]=0;
else a[3]=1;
if(a[0]+a[1]+a[2]+a[3]==1)
for(int i=0;i<4;i++)
if(a[i]){printf("%d
",i+1); break; }
}//end k4
}//end k3;
}//end k2;
}//end k1;
printf("
");
system("pause");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.