トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
ABC-045-B 3人でカードゲームイージー
■■■問題■■■
Aさん、Bさん、Cさんの3人が以下のようなカードゲームをプレイしています。
●最初、3人はそれぞれa、b、cいずれかの文字が書かれたカードを、何枚か持っている。
これらは入力で与えられた順番に持っており、途中で並べ替えたりしない。
●Aさんのターンから始まる。
●現在自分のターンである人がカードを1枚以上持っているならば、そのうち先頭のカードを捨てる。
その後、捨てられたカードに書かれているアルファベットと同じ名前の人
(例えば、カードにaと書かれていたならばAさん) のターンとなる。
●現在自分のターンである人がカードを1枚も持っていないならば、
その人がゲームの勝者となり、ゲームは終了する。
3人が最初に持っているカードがそれぞれ先頭から順に与えられます。
具体的には、文字列SA、SB、SCが与えられます。
文字列SAのi文字目 ( 1 <= i <= |SA| ) に書かれている文字が、
Aさんの持っている中で先頭からi番目のカードに書かれている文字です。
文字列SB、SCについても同様です。
最終的に誰がこのゲームの勝者となるかを求めてください。
■■■入力■■■
SA
SB
SC
●1 <= |SA| <= 100
●1 <= |SB| <= 100
●1 <= |SC| <= 100
●SA、SB、SCに含まれる文字はそれぞれa、b、cのいずれか
■■■出力■■■
Aさんが勝つならA、Bさんが勝つならB、Cさんが勝つならCと出力せよ。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("aca");
WillReturn.Add("accc");
WillReturn.Add("ca");
//A
//ゲームは以下のように進行します。
//●Aさんが、持っている中で最初のカードaを捨てる。次はAさんの番となる。
//●Aさんが、持っている中で最初のカードcを捨てる。次はCさんの番となる。
//●Cさんが、持っている中で最初のカードcを捨てる。次はCさんの番となる。
//●Cさんが、持っている中で最初のカードaを捨てる。次はAさんの番となる。
//●Aさんが、持っている中で最初のカードaを捨てる。次はAさんの番となる。
//●Aさんはもう持っているカードがない。よってAさんの勝利となり、ゲームは終了する。
}
else if (InputPattern == "Input2") {
WillReturn.Add("abcb");
WillReturn.Add("aacb");
WillReturn.Add("bccc");
//C
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
List<char> AList = InputList[0].ToList();
List<char> BList = InputList[1].ToList();
List<char> CList = InputList[2].ToList();
char Curr = 'a';
while (true) {
List<char> pList = null;
if (Curr == 'a') pList = AList;
if (Curr == 'b') pList = BList;
if (Curr == 'c') pList = CList;
if (pList.Count == 0) break;
Curr = pList[0];
pList.RemoveAt(0);
}
if (Curr == 'a') Console.WriteLine('A');
if (Curr == 'b') Console.WriteLine('B');
if (Curr == 'c') Console.WriteLine('C');
}
}
解説
Listクラスでシュミレーションしてます。