[タイトル] CCF CSPアルゴリズム2番目の質問の練習(更新)

/ * 
質問番号:201912から2つの
質問名:ロケーションゴミ
タイトル説明:
空中ドローンによってすでに位置にごみを知らまだ洗浄されるN、前記最初のi(1 <= I <= N) で座標(XI、YI)は、すべての座標が整数であることを確認します。
私たちは、集中ごみにいくつかのゴミを確立することを願っています。具体的には、ごみ箱の適合性を確立するために、位置(x、y)のために、私たちは、主に以下の点を考慮:
・(x、y)の座標は整数でなければなりませんし、そこにゴミがあり、
4隣人ダウン位置について、すなわち、(X、Y + 1)、 (X、Y-1)、(x + 1、y)の全てのごみに及び(X-1、Y)が存在しなければならない; 
*さらに、我々は、上記の二つを満たしますサイト状態。スコアで表されない以上4以下の自然数であり(X±1、Y±1 )角度位置の4対が存在するいくつかのゴミが存在します。
さて、あなたはそれぞれのスコアの統計で、サイト選択の数を見て。
* / 

の#include <iostreamの> 
する#include <cstdioを> 
する#include <ベクトル> 
の#include <アルゴリズム> 使用して名前空間STD; クラスデータ
{ パブリックINT X、Y、N- = - 。1

 


; 
}。

INT のmain()
{ 
    int型のn、X、Y、CNT1、CNT2、アウト [ 5 ] { 0 }。
    ベクトル <データ> DAT; 
    cinを >> N; 
    dat.reserve(N)
    以下のためにINT iが= 0 ; I <N; ++ I)
    { 
        データd。
        CIN >> DX >> DY。
        dat.push_back(D)。
    } 
    
    のための(自動&I:DAT)
    { 
        CNT1 = 0 
        CNT2 = 0;
        以下のための(自動J:DAT)
        { 
            場合(IX == JX && ABS(IY - JY)== 1 
                CNT1 ++ それ以外の 場合(IY == JY && ABS(IX - JX)== 1 
                CNT1 ++ ;
            それ以外の 場合(ABS(IX - JX)== 1 && ABS(IY - JY)== 1 
                CNT2 ++ ; 
        } 
        であれば(CNT1 == 4 
        {  == CNT2。
            でる【CNT2] ++ ; 
        } 
    } 
    COUT << アウト [ 0 ] << ENDL << アウト [ 1 ] << ENDL << アウト [ 2 ] << ENDL << アウト [ 3 ] << ENDL << アウト [ 4 ]。
    リターン 0 ; 
}

 

/ * 
質問番号:201909から1つ
の質問名前:ボブリンゴの
タイトル説明
暁明彼の果樹園では、いくつかのリンゴの木を植えました。操作を薄くするいくつかのラウンドに植栽過程におけるリンゴの品質を確保するためには、それを除去しなければ先に木からリンゴ悪いのです。
間伐動作は、第1ラウンド、各ツリー上の記録暁明りんごの番号の前に開始されました。操作を各ラウンドを薄くし、記録暁明の数は、すべての木、アップルから削除されます。
操作を薄くする最終ラウンドの終わりには、統計学的に関連する情報暁明を助けてください。
* / の#include <iostreamの> する#include <ベクトル> 使用して 名前空間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 iは= 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 
タイトル説明
オペレータが4つの数字が分離を確実にする、各ゲームは、1-9からの4つの数字で構成されて定義、及び3は、4つの演算子からなる二十から二、ブラケット及び他の文字は、存在しない
四則演算の順序に従った動作の順序を。記号+は加算を表し、記号による減算-乗算小文字文字X、分割シンボル/表します。
分割は2/3 = 0.3 / 2 = 4/2 = 2、例えば、ゲームで割り切れます。 先生があなたに解決のnゲームを与え、あなたは、各ゲームの結果が24であるかどうかを確認するためのプログラムを書きます。
* / の#include <iostreamの> する#include <スタック> 使用して名前空間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型優先(CHAR OP) { もし(OP == ' + ' || OP == ' - ' リターン 1 他の リターン 2 } int型のmain() { 文字列入力、 int型nは、結果; スタック < 文字 > OPS、OPS2。 スタック < 整数 > NUMS、nums2。 cinを >> N; 以下のためにINT iが= 0 ; I <N; ++ I) { CIN >>入力; 以下のためにINT iが= 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を 他の 裁判所未満 << " ノー" << てendl; } 戻り 0 }

 

おすすめ

転載: www.cnblogs.com/joeyzhao/p/12286337.html