TRZ_2007 的博客

TRZ_2007 的博客

题解 CF711A 【Bus to Udayland】

posted on 2019-07-05 16:07:35 | under 题解 |

Description

输入一个 $5$ 行 $N$ 列的矩阵,让你寻找第一个含有“OO”的位置,并改成“++”,输出“YES”和这个矩阵,否则输出“NO”。

Sample Input

6
OO|OX
XO|XX
OX|OO
XX|OX
OO|OO
OO|XX

Sample Output

YES
++|OX
XO|XX
OX|OO
XX|OX
OO|OO
OO|XX

Solution

这道题目完全就是一个暴力……,既然让你查找含有“OO”的位置,何不用一个循环间隔查找?为何要枚举每一种可能呢?
我们可以直接枚举 $N$ 列,再枚举前四个,判断 $str_{i,j}$ 和 $str_{i,j+1}$ 是否都为“O”,若是,则改成“+”,跳出循环。最后输出,程序结束。

Code

#include <bits/stdc++.h>
using namespace std;

const int N = 1100;

char str[N][10];
int n,flag;

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)//输入
        for(int j=0;j<5;j++)
            cin>>str[i][j];

    for(int i=1;i<=n;i++)//查找
    {
        for(int j=0;j<4;j++)
            if((str[i][j]=='O'&&str[i][j+1]=='O'))//找到了
            {
                cout<<"YES\n";//输出YES
                flag = 1;
                str[i][j] = '+';//改成+
                str[i][j+1] = '+';
                break;
            }
        if(flag) break;//找到了就不用再找了
    }
    if(!flag)//没找到
    {
        cout<<"NO\n";
        exit(0);//强制停止
    }
    for(int i=1;i<=n;i++)//若有,则输出
    {
        for(int j=0;j<5;j++)
            cout<<str[i][j];
        cout<<"\n";
    }
}