[제목] CCF CSP는 두 번째 질문 연습 (갱신) 알고리즘

/ * 
질문 번호 : 201912-2 
질문 이름 : 위치 쓰레기 
제목 설명 : 
공중 드론 이미 아직 N 세정 될 수있는 위치에있어서, 상기 제 I (1 <= I <=에서 쓰레기 공지 N) 에서 좌표 (XI, 이순신), 모든 좌표가 정수인지 확인합니다. 
우리는 집중에 쓰레기 일부 쓰레기를 구축하도록하겠습니다. 즉, 휴지통의 적합성을 확립 할 수있는 위치 (x, y)에 대해, 우리는 주로 다음을 고려 
· (X, Y) 좌표는 정수, 그리고 거기에 쓰레기가해야 
네 개의 위치에 인접 다운 관하여 즉, (X, Y + 1), (X, Y-1), (X + 1, Y) 모두에서 및 (X-1, y)는 쓰레기가 있어야; 
* 또한, 우리는 두 개의 위를 만족 현장 조건. 점수는로 표현하게는 4 이하의 자연수이다 (X ± 1, ± 1, Y ) 각도 위치 네 쌍 거기 여러 쓰레기 존재한다. 
지금, 당신은 각 점수에 대한 통계 사이트 선택의 수를 찾습니다. 
* / 

#INCLUDE <iostream> 
#INCLUDE <cstdio> 
#INCLUDE <벡터> 
#INCLUDE <알고리즘> 은 USING 스페이스 STD를, 클래스 데이터 
{ 공개 :
     INT X, Y, N- = - . 1

 


; 
}; 

값 int ) (주 
{ 
    INT N, X, Y, CNT1을 CNT2, 아웃 [ 5 ] { 0 }; 
    벡터 <데이터> DAT; 
    CIN >> N; 
    dat.reserve (N); 
    위한 ( INT 난 = 0 ; I <N; ++ I) 
    { 
        데이터 D; 
        CIN >> >> DX , DY; 
        dat.push_back (d); 
    } 
    
     (자동 및 I : DAT) 
    { 
        CNT1 = 0 ; 
        CNT2 = 0;
        대한 (자동 J : DAT) 
        { 
            경우 (IX == JX && 복근 (IY - JY) == 1 ) 
                CNT1 ++ ;
            다른  경우 (IY == JY && 복근 (IX - JX) == 1 ) 
                CNT1 ++ ;
            다른  경우 (ABS (IX - JX) == 1 && 복근 (IY - JY) == 1 ) 
                CNT2 ++ ; 
        } 
        경우 (CNT1 == 4 ) 
        { 
            에서 == CNT2;
            [CNT2] ++ ; 
        } 
    } 
    COUT << 출력 [ 0 ] << ENDL << 아웃 [ 1 ] << ENDL << 아웃 [ 2 ] << ENDL << 아웃 [ 3 ] << ENDL << 아웃 [ 4 ];
    반환  0 ; 
}

 

/ * 
질문 번호 : 201909-1 
질문 이름 : 밥 사과 
제목 설명 
샤오 밍 자신의 과수원에서 일부 사과 나무를 심었습니다. 작업을 엷게 몇 차례의 재배 과정에서 사과의 품질을 보장하기 위해, 그 제거 할 앞서 나무에서 나쁜 사과입니다. 
엷게하는 작업은 첫 라운드, 각 나무에 기록 샤오밍 사과의 번호 앞에 시작됩니다. 작동 각 라운드 대머리 기록 샤오밍의 수는 애플에서 모든 나무를 제거한다.
숱이 작업의 최종 라운드의 끝에서, 도움 샤오 밍 통계적으로 관련 정보를하시기 바랍니다.
* / #INCLUDE <iostream> #INCLUDE <벡터> 은 USING 스페이스 STD를, INT 의 main () { INT의 회전, treeNum, appleNum, T { 0 }, D { 0 } E { 0 } CIN >> treeNum, 벡터 < INT > 드롭 (treeNum, 0 ) 에 대한 (int로 난 = 0 ; I <treeNum; ++ I) { 벡터 < INT > VT; CIN >> 권선; vt.resize (회전 + 1 ); VT [ 0 ] = 권선; ( INT J = 1 ; J <= 권선; ++ j)는 CIN >> VT [J] appleNum = VT [ 1 ]; ( INT의 K = 2 ; K <= 회전 ++ K) { 경우 (VT [K] <= 0 ) { appleNum + = VT [K]; } 다른 { 강하 [I] + = appleNum - VT [K]; appleNum = VT [K]; } } T + = appleNum; } 에 대해 ( INT 난 = 0 ; I <treeNum; ++ I) { 경우 (드롭 [I]> 0 ) D를 ++ ; 경우 (드롭 [I]> 0&& 강하 [(I + 1 ) % treeNum]> 0 && 강하 [(I + treeNum- 1 ) treeNum %]> 0 ) E ++ ; } COUT << T << ' ' << D << ' ' << E; 반환 0 ; }

 

/ * 
질문 번호 : 201903-2 
질문 이름 : 24.2 
[제목] 설명 
운영자가 네 개의 숫자가 분리 된 보장합니다, 각 게임은 1-9에서 네 개의 숫자로 구성되어 정의하고, 3 사 개 사업자로 구성된 스물 두 괄호 및 기타 문자가 존재하지 않는 
네 개의 산술 연산의 순서에 따라 작업의 순서를. + 기호가 부가 나타내고, 기호에 의한 감산 - 승산 소문자가 X, 나눗셈 기호 / 나타냄.
분할 예, 2/3 = 0.3 / 2 = 4/2 = 2, 게임 나눌. 교사는 당신에게 솔루션 n은 게임을했다, 당신은 각 게임의 결과는 24 여부를 확인하는 프로그램을 작성.
* / #INCLUDE <iostream> #INCLUDE <스택> 은 USING 스페이스 STD를, 무효 culculate (스택 < INT > & nums 스택 < 문자 > 및 OPS, BOOL의 태그) { INT NUM2 nums.top {()} nums.pop () ; INT NUM1의 nums.top {()} nums.pop (); INT 결과; OP {ops.top ()}; () ops.pop; 스위치 (OP) { 경우 ' + ' : 결과 = NUM1 NUM2 +; 휴식 ; 경우 ' - ' : 태그? 결과 = NUM1 - NUM2 : 결과 = NUM2 - NUM1; 휴식 ; 케이스 ' X ' : 결과 = NUM1 * NUM2; 휴식 ; 경우에 ' / ' : 결과 = NUM1 / NUM2; 휴식 ; } nums.push (결과); } 인라인 INT의 우선 순위 ( OP) { 경우 (OP == ' + ' || 영업 == ' - ' ) 반환 1 ; 다른 반환 2 ; } int 형 ) (주 { 문자열을 입력하는 단계; INT의 N, 결과; 스택 < 문자 > OPS, ops2를; 스택 < INT > nums, nums2; CIN >> N; 위한 ( INT 난 = 0 ; I <N; ++ I) { CIN >> 입력; 위한 ( INT 난 = 0 ; I < 7 ; ++ I) { 경우 (I % (2) == 0 ) { nums.push (입력 [I] - ' 0 ' ); 경우 (ops.empty () && 우선 순위 (ops.top ())! == 2 ) culculate (nums, OPS, ); } 다른 ops.push (입력 [I]); } 동안 (!의 ops.empty ()) { ops2.push (ops.top ()); () ops.pop; } 동안 (!의 nums.empty ()) { nums2.push (nums.top ()); nums.pop (); } 동안 (! ops2.empty ()) culculate (nums2, ops2를, 거짓 ); 결과 = () nums2.top 단계; nums2.pop (); 경우 (발생 == 24 ) COUT << " 예를 " << ENDL; 다른 cout과 << " 아니오 " << endl의; } 반환 0 ; }

 

추천

출처www.cnblogs.com/joeyzhao/p/12286337.html