나무의 여덟 개의 동전 문제

2302 단어 수필코드
분석:
8 개의 동전 을 3 조로 나눈다. a, b, c 1 조, d, e, f 1 조, g, h 1 조
우선 abc 와 def 를 각각 천평 양측 에 놓 으 면 세 가지 비교 결과 가 나 올 수 있 습 니 다.
(1)a+b+c>d+e+f
(2)a+b+c=d+e+f
(3)a+b+c
만약 a + b + c > d + e + f 라면 이 여섯 개의 동전 중 하 나 는 위조지폐 라 는 것 을 확신 할 수 있 을 뿐만 아니 라 g 와 h 를 진짜 화폐 라 는 것 도 설명 할 수 있다.이때 천평 양 끝 을 각각 동전 하 나 를 제거 할 수 있 습 니 다. c 와 f 를 제거 하 는 동시에 a 와 e 를 교환 한 다음 에 두 번 째 비 교 를 할 수 있 습 니 다. 비교 하 는 구 조 는 똑 같이 세 가지 가 있 습 니 다.
① a + e > d + b: 변 경 된 후 양쪽 의 경중 관계 가 변 하지 않 는 다 는 것 을 나타 내 고 위 폐 는 반드시 a 와 d 중 하나 임 을 나타 낸다. 이때 우 리 는 진짜 화폐 (예 를 들 어 h) 와 a 를 비교 하면 위 폐 를 찾 을 수 있다.만약 a > h 라면 a 는 비교적 무 거 운 위조지폐 이다.만약 a = h 라면 d 는 비교적 가 벼 운 위조지폐 이다.이 가능 하 다, ~ 할 수 없다,...
② a + e = d + h: 위 폐 는 제 거 된 두 개의 동전 c 와 f 에서 다른 절 차 는 ① 과 같다 는 것 을 나타 낸다.
③a+e
(2) (3) 상황 절차 유사 (1) 분석
그림:
#include
#include

using namespace std;

//           
void print(int jia, int zhen, int i)
{
    if(jia > zhen)
    {
        cout< d+e+f | a+b+c == d+e+f | a+b+c < d+e+f     
    int abc = arr[0] + arr[1] + arr[2];
    int def = arr[3] + arr[4] + arr[5];
    int a = arr[0];
    int b = arr[1];
    int c = arr[2];
    int d = arr[3];
    int e = arr[4];
    int f = arr[5];
    int g = arr[6];
    int h = arr[7];
    if(abc > def)		//6         ,g,h   
    {
        if((a + e) > (d + b))	//  c,f, b,e   ,        ,                 ,      a,d    
        {
            compare(a, d, g,1,3);
        }
        else if((a + e) == (d + b))
        {
            compare(c,f,g,2,5);
        }
        else
        {
            compare(b,e,g,1,4);
        }
    }
    else if(abc == def)	//   g,h  ,    
    {

        if(g == a)
        {
            print(h,g,7);
        }
        else
        {
            print(g,h, 6);
        }

    }
    else				//abc < def          ,g,h   
    {
        if((a + e) > (d + b))
        {
            compare(b,e,g,1,4);
        }
        else if((a + e) == (d + b))
        {
            compare(c,f,g,2,5);
        }
        else
        {
            compare(a, d, g,1,3);
        }
    }

}

int main()
{
    int i = 0;
    int arr[8];
    //    a、b、c、d、e、f、g、h   
    cout<>arr[i];
    }
    eightcoin(arr);

    system("pause");
    return 0;
}

좋은 웹페이지 즐겨찾기