21xrx.com
2024-09-19 10:08:25 Thursday
登录
文章检索 我的文章 写文章
C++算法题目:点球大战
2023-07-05 09:35:53 深夜i     --     --
C++ 算法 点球大战 游戏 策略

点球大战是一种足球比赛的形式,两队在经过90分钟的比赛后,如果没有分出胜负,则进行点球大战。点球大战中,每队轮流进行五次点球,如果得分数相同,则进行加时赛。本文将介绍一道 C++ 算法题目,让我们来看看这个题目的具体内容以及解题思路。

题目描述

现在有两支队伍进行了一场点球大战,第一支队伍先进行点球发挥,两队各进行五次射门,比如说第一队先进行点球大战,将其得分情况以字符串的形式给出,'O' 表示此球没有进,'X' 表示此球进了。现在给定第二队的得分情况,我们需要输出两队比赛的完整得分情况。

输入格式:

第一行输入一个字符串表示第一队进球情况,第二行输入一个字符串表示第二队进球情况。

这两个字符串长度均为 5,仅包含字符 'X' 和 'O'。

输出格式:

输出两队比赛的得分情况,每行输出一支队伍的得分情况,即输出两个字符串。得分按照进球情况从左到右输出,'X' 表示进球,'O' 表示没有进球。

C++代码实现

我们可以把这个题目看做是字符串的比赛,将两个字符串的比分加和即可。

首先,我们需要先读入两个字符串表示两支队伍的进球情况。


#include <iostream>

#include <cstring>

using namespace std;

int main()

  string scoreA

然后,我们需要先把两支队伍的比分统计出来,计算出得分情况。


int pointA = 0, pointB = 0;

for (int i = 0; i < 5; i++)

{

  if (scoreA[i] == 'X')

    pointA++;

  if (scoreB[i] == 'X')

    pointB++;

}

最后,我们需要输出比赛结果。


cout << "Team A: ";

for (int i = 0; i < pointA; i++)

  cout << "X";

for (int i = 0; i < 5 - pointA; i++)

  cout << "O";

cout << endl << "Team B: ";

for (int i = 0; i < pointB; i++)

  cout << "X";

for (int i = 0; i < 5 - pointB; i++)

  cout << "O";

cout << endl;

完整代码实现


#include <iostream>

#include <cstring>

using namespace std;

int main()

{

  string scoreA, scoreB;

  cin >> scoreA >> scoreB;

  int pointA = 0, pointB = 0;

  for (int i = 0; i < 5; i++)

  {

    if (scoreA[i] == 'X')

      pointA++;

    if (scoreB[i] == 'X')

      pointB++;

  }

  cout << "Team A: ";

  for (int i = 0; i < pointA; i++)

    cout << "X";

  for (int i = 0; i < 5 - pointA; i++)

    cout << "O";

  cout << endl << "Team B: ";

  for (int i = 0; i < pointB; i++)

    cout << "X";

  for (int i = 0; i < 5 - pointB; i++)

    cout << "O";

  cout << endl;

  return 0;

}

小结

本文介绍了一道 C++ 算法题目,即点球大战。解决这个问题,我们需要将两支队伍的比分加和,最后输出比赛结果。这个问题可以帮助大家提高对 C++ 字符串与基本语法的理解。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复