PAT乙級1008-ハサミ石布
4690 ワード
“ ” :
, 、 、 , 。
説明を入力:
1 N(<=105), 。 N , , 、 。C “ ”、J “ ”、B
“ ”, 1 , 2 , 1 。
出力の説明:
1、2 、 、 、 , 1 。 3 , 、 , 1 。
, 。
入力例:
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
出力例:
5 3 2
2 3 5
B B
#include<iostream>
using namespace std;
int win[3] = { 0 }; //
char max3(int *a)
{
char r = 'B' ; //C “ ”、J “ ”、B “ ”
if (a [1] > a[0]) //a[0]- a[1]- a[2]-
{
a[0] = a [1]; //'B'-66 'C'-67 'J'-74
r = 'C';
}
if (a [2] > a[0])
r = 'J';
return r;
}
int main()
{
int n;
char a[105], b[105];
int awin[3] = { 0 };
int bwin[3] = { 0 };
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i] >> b[i]; //
int k = (a[i] - b[i]) * (a[i] - b[i]);
if (k == 1)
a[i] == 66 ? win[0]++, awin[0]++ : (win[1]++, bwin[0]++);
else if (k == 49)
a[i] == 67 ? win[0]++, awin[1]++ : (win[1]++, bwin[1]++);
else if (k == 64)
a[i] == 74 ? win[0]++, awin[2]++ : (win[1]++, bwin[2]++);
else
win[2]++;
}
cout << win[0] << " " << win[2] << " " << win[1] << endl; //
cout << win[1] << " " << win[2] << " " << win[0] << endl; //
cout << max3(awin) << " " << max3(bwin);
system( "pause");
return 0;
}
//by myself
#include<iostream>
using namespace std;
int main()
{
char a[105] = { 0 }, b[105] = { 0 };
int n = 0;
int win = 0, ping = 0, lose = 0;
int aC = 0, aB = 0, aJ = 0, bC = 0, bB = 0, bJ = 0;
scanf( "%d", &n);
for (int i = 0; i < n; i++)
{
scanf( " %c %c", &a[i], &b[i]);
if ((a[i] == 'C' ) && (b[i] == 'J')) { win++; aC++; continue; }
if ((a[i] == 'J' ) && (b[i] == 'B')) { win++; aJ++; continue; }
if ((a[i] == 'B' ) && (b[i] == 'C')) { win++; aB++; continue; }
if ((a[i] == 'C' ) && (b[i] == 'C')) { ping++; continue; }
if ((a[i] == 'J' ) && (b[i] == 'J')) { ping++; continue; }
if ((a[i] == 'B' ) && (b[i] == 'B')) { ping++; continue; }
if ((a[i] == 'C' ) && (b[i] == 'B')) { lose++; bB++; continue; }
if ((a[i] == 'B' ) && (b[i] == 'J')) { lose++; bJ++; continue; }
if ((a[i] == 'J' ) && (b[i] == 'C')) { lose++; bC++; continue; }
}
cout << win << " " << ping << " " << lose << endl;
cout << lose << " " << ping << " " << win << endl;
if ((aB >= aC) && (aB >= aJ))
cout << 'B' << " " ;
else if (aC >= aJ)
cout << 'C' << " " ;
else
cout << 'J' << " " ;
if ((bB >= bC) && (bB >= bJ))
cout << 'B';
else if (bC >= bJ)
cout << 'C' ;
else
cout << 'J' ;
system( "pause");
return 0;
}
まとめ:ネット上で他の解法を見て、自分も実はとても良い方法を考えていないで、模倣者の上の書いたことについて、ここには小さなロジック(小さなテクニックでもあるでしょう!)win[0]win[1]win[2]はこの3つの変数だけで統計を行い、当時自分が考えていたのは6つの変数で統計を行っていたが、甲が勝ったとき、乙は負けたに違いない.ハハ、バカだった.