속도 24 점
시간 제한 : 2000/1000 MS (자바 / 기타) 메모리 제한 : 32,768분의 65,536 K (자바 / 기타)
총 제출 (들) : 7037 허용 제출 (들) : 1857
문제 설명
나는 대부분의 사람들이 믿지 속도 24 점 해왔다. 이것은, A (1)을 포함하면 2,3,4,5,6,7,8,9,10, J (11), Q (12)를 임의의 네 카드를 제공하는 K (13)이다. '-', '*', '/'연산자, 최종 연산 결과가 24이되도록 괄호 (각각의 수는 한번만 사용되어야 함), 동작의 순서를 변경은 오직 '+'를 요구한다. 게임은 간단하지만, 상황이 해결책은 종종 매우 우울 사람들이 없다가 발생했습니다. 당신의 작업은 풀 수 있는지 여부를 결정하기 위해 무작위로 생성 된 네 개의 카드의 각 그룹을위한 것입니다. 우리는 특별히, 계산의 전체 과정은 소수를 표시 할 수 없습니다.
입력
한 줄에 입력 데이터의 각 세트는 4 개 개의 카드를 제공.
산출
입력 데이터의 각 세트는 하나 개의 출력 라인에 대응. 만약 출력의 해결의 가능성 "예", 해결책 후 출력 "아니오".
샘플 입력
2부터 3~6
3 3 8 8
샘플 출력
예
아니
생각
작업없이 순서 때문에, 우리는 연산에 대한 두 개의 숫자를 선택할 수 있습니다.
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; int로 A [ 4 ]; 불리언 힘 [ 4 ], OK 플래그; 보이드 DFS ( INT의 현재) { / * COUT << CUR << '\ n을'; 경우 (나는 <4] I = 0 값 int I ++) { COUT << A [I] << '; } COUT << '\ n을'; * / 경우 (OK) 창 ; 경우 (현재의 == 3 ) { 위해 ( int로 I = 0 ; I는 < 4 ; i가 ++ ) 만약(힘 [I] && A [I] == 24 ) OK = 참 ; 반환 ; } 에 대해 ( int로 I = 0 ; i가 < 4 ; i가 ++ ) 경우 (힘은 [I]) 에 대한이 ( INT의 j는 = 나 + 1 , J < 4 ; J ++ ) 경우 (힘은 [j]가) { 힘이 [j]가 = 거짓 ; INT (X) = A [i]를, Y는 = A [J]을; 경우 (Y! =0 && (X) % y는 == 0 ) 이 [I] = X / Y, DFS (현재 + 1 ); 경우 (X! = 0 && %의 Y의 X == 0 ) 이 [I] = Y / X, DFS (현재 + 1 ); A [I] =의 X - Y, DFS (현재 + 1 ); A [I] = Y - X, DFS (현재 + 1 ); A [I] = X + Y, DFS (현재 + 1 ); A [I] = X * Y, DFS (현재 + 1 ); A [I] =엑스; 힘 [J]를 = 참 ; } } INT의 READ () { 숯 C [ 4 ] [ 4 ]; INT 입술 = scanf와 ( " % S % S % S % S " , C [ 0 ], C [ 1 ], C [ 2 ], C [ 3 ]); 위한 ( int로 I = 0 ; i가 < 4 ; i가 ++ ) { 경우 (c [i]는 [ 0 ] == ' ' ) 이 [I]= 1 ; 다른 경우 ([I] [C 0 ] == ' J ' ) 이 [I] = 11 ; 다른 경우 (c [i]는 [ 0 ] == ' Q ' ) 이 [I] = 12 ; 다른 경우 (c [i]는 [ 0 ] == ' K ' ) 이 [I] = 13 ; 다른 경우 (c [i]는 [ 0 ] == ' 1 ') A는 [I] = 10 ; 다른 A [I] = (C)의 [I] [ 0 ] - ' 0 ' ; } memset 함수 (마주, 사실 , 는 sizeof (마주)); OK = 거짓 ; 돌아 ~ 입술을; } INT 의 main () { #ifndef ONLINE_JUDGE // freopen을 ( "in.txt", "R", 표준 입력); // freopen을 ( "out.txt", "w", 표준 출력); #endif 다음 상태 (READ는 ()) { / * 위해 (나는 <4] I = 0 int로 난 ++) COUT << A [I] << ""; COUT << ENDL; * / DFS ( 0 ); 풋 (OK ? " 예 " : " 아니오 " ); } }