PAT B 1052(C ++) - ロングブラシ弟のタイトルパス

孟1052(20分)売り
顔文字は通常「手」で構成されていピリダジンMengmengを、「目」、3つの主要部分の「口」。簡単にするために、我々は記号式は次の形式で出力されますと仮定します。ここに画像を挿入説明
シンボルのセットは、今の選択肢を与え、あなたは、ユーザーの要件の出力式に応じてくださいます。

入力フォーマット:
入力前のショットの最初の3行に対応するため、選択可能なシンボルセット目、口。内の角括弧[]で囲まれた各シンボル。各セットは、少なくとも1つのシンボルを持っていることを確認してくださいタイトル、シンボルは、10以上のではなく、各シンボルは、1つから4つのnull以外の文字が含まれています。線は、正の整数K、ユーザ要求の数が与えられた後。各ユーザは、シンボルの選択が与えられ、次いでK行、左手のため、左眼、口、目、手-ちょうどそれぞれのセット(1から始まる)内のシンボル数を与えるために、数字の間の空間分離しました。

出力形式:
出力ライン式に生成された各ユーザーの要求。ユーザーが選択は、シリアル番号が存在しない場合は、出力が、あなたは私をからかっていますか?@ / @ 。

サンプル入力
[╮] [╭] [O] [ ] [/ ] [<] [>]
[╯] [╰] [^] [ - ] [=] [>] [<] [@] [⊙ ]
[Д] [▽へ] [_] [イプシロン] [^] ...
。4
。1 1 2 2 2
。6. 8 1. 5.5
。3. 3. 4. 3. 3
2 9 3 10 3

出力サンプル:
╮(╯▽╰へ)╭
<(Д= @)/〜
O(εの)O
あなたは私をからかっています@ / @ V?

ソリューションの概要:複合入力、最初の行によってCINリード線と、シンボルに格納されたベクトルを読み取るために、最後のシンボルベクトルから読み取る必要があり、出力することができ

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
	string line;
	int num = 0;
	vector<vector<string>> s;
	for (int i = 0; i < 3; i++){
		getline(cin, line);
		vector<string> x;
		int j = 0,k=0;
		while (j < line.length()){
			if (line[j] == '['){
				while (k++ < line.length()){
					if (line[k] == ']'){
						x.push_back(line.substr(j+1,k-1-j));
						break;
					}
				}
			}
			j++;
		}
		s.push_back(x);
	}
	cin >> num;
	for (int i = 0; i < num; i++){
		int l_hand = 0, l_eye = 0, m = 0, r_eye = 0, r_hand = 0;
		cin >> l_hand >> l_eye >> m >> r_eye >> r_hand;
		if (l_hand > s[0].size() || l_eye > s[1].size() || m > s[2].size() || r_eye > s[1].size() || r_hand > s[0].size() || l_hand<1 || l_eye<1 || m<1 || r_hand<1 || r_eye<1){
			cout << "Are you kidding me? @\\/@"<< endl;
		}
		else{
			cout << s[0][l_hand - 1] <<"("<< s[1][l_eye-1] << s[2][m-1] << s[1][r_eye-1] <<")" << s[0][r_hand-1] << endl;
		}
	}
	return 0;
}
公開された52元の記事 ウォンの賞賛0 ビュー698

おすすめ

転載: blog.csdn.net/qq_23079139/article/details/104112429