problemscpp
A collection of my answers to algorithm problems in c++.
函数
pat::b::b1018 命名空间参考

1018 锤子剪刀布 更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (b1018, case1)
 

详细描述

1018 锤子剪刀布

函数说明

◆ main()

int pat::b::b1018::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp571 行定义.

571 {
572 int n;
573 cin >> n;
574 int a_win = 0;
575 int b_win = 0;
576 int a_win_count[3] = {};
577 int b_win_count[3] = {};
578 int tie = 0;
579 for(int i = 0; i < n; i++) {
580 char a;
581 char b;
582 cin >> a >> b;
583 if(a == b) {
584 tie++;
585 } else if(a == 'C' && b == 'J' || a == 'J' && b == 'B' || a == 'B' && b == 'C') {
586 a_win++;
587 switch(a) {
588 case 'B':
589 a_win_count[0]++;
590 break;
591 case 'C':
592 a_win_count[1]++;
593 break;
594 case 'J':
595 a_win_count[2]++;
596 break;
597 }
598 } else {
599 b_win++;
600 switch(b) {
601 case 'B':
602 b_win_count[0]++;
603 break;
604 case 'C':
605 b_win_count[1]++;
606 break;
607 case 'J':
608 b_win_count[2]++;
609 break;
610 }
611 }
612 }
613 cout << a_win << ' ' << tie << ' ' << b_win << endl
614 << b_win << ' ' << tie << ' ' << a_win << endl;
615 int a_win_max = 0;
616 int b_win_max = 0;
617 for(int i = 0; i < 3; i++) {
618 a_win_max = max(a_win_max, a_win_count[i]);
619 b_win_max = max(b_win_max, b_win_count[i]);
620 }
621 for(int i = 0; i < 3; i++) {
622 if(a_win_count[i] == a_win_max) {
623 switch(i) {
624 case 0:
625 cout << 'B';
626 break;
627 case 1:
628 cout << 'C';
629 break;
630 case 2:
631 cout << 'J';
632 break;
633 }
634 cout << ' ';
635 break;
636 }
637 }
638 for(int i = 0; i < 3; i++) {
639 if(b_win_count[i] == b_win_max) {
640 switch(i) {
641 case 0:
642 cout << 'B';
643 break;
644 case 1:
645 cout << 'C';
646 break;
647 case 2:
648 cout << 'J';
649 break;
650 }
651 break;
652 }
653 }
654 return 0;
655 }

被这些函数引用 TEST().

◆ TEST()

pat::b::b1018::TEST ( b1018  ,
case1   
)

在文件 pat_test.cpp261 行定义.

261 {
262 istringstream in("10\n"
263 "C J\n"
264 "J B\n"
265 "C B\n"
266 "B B\n"
267 "B C\n"
268 "C C\n"
269 "C B\n"
270 "J B\n"
271 "B C\n"
272 "J J");
273 auto out = ostringstream();
274 main(in, out);
275 const auto ans = out.str();
276 ASSERT_EQ("5 3 2\n"
277 "2 3 5\n"
278 "B B",
279 ans);
280 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().