问题标题: 酷町堂:题目太难求帮助!

0
1
已解决
王子逸
王子逸
新手天翼
新手天翼

小P发明了一种简单的“围棋”,规则为:在m行n列的棋盘上,棋盘中元素全都是’+’,’*’。如果’*‘字符的上、下、左、右全是’+’,则它会被“吃掉”,用字符‘0’代替(处在边缘的’*‘不一定上下左右四个方向都有符号,但只要是被’+'围起来,就会被”吃掉“)。
现在请你编写一个程序,输入棋盘中棋子的摆放,完成这个游戏。

输入描述 Input Description

m+1行。第一行两个整数m、n,表示棋盘的大小
接下来m行,每行n个字符,表示棋盘上每个位置摆放的棋子

输出描述 Output Description

m行,每行n个字符

样例输入 Sample Input

3 4 + + + + * + * * + * + +

样例输出 Sample Output

+ + + + 0 + * * + 0 + +

数据范围及提示 Data Size & Hint

n,m<=50
只考虑单独的’*‘被’+‘围起来的情况,不用考虑多个连续’*‘号被’+'包围等复杂的情况。

考试题!!!


0
已采纳
被禁言 李秉轩
李秉轩
修练者
修练者
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int m,n;
char a[55][55];
int main(){
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    cin>>m>>n;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=m-1;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]=='*'&&a[i-1][j]!='*'&&a[i+1][j]!='*'&&a[i][j-1]!='*'&&a[i][j+1]!='*'&&a[i-1][j]!='0'&&a[i+1][j]!='0'&&a[i][j-1]!='0'&&a[i][j+1]!='0'){
                a[i][j]='0'; 
            }
            cout<<a[i][j]<<' ';
        }
        cout<<endl;
    }
    for(int j=1;j<=n;j++){
        if(a[m][j]=='*'&&a[m-1][j]!='*'&&a[m+1][j]!='*'&&a[m][j-1]!='*'&&a[m][j+1]!='*'&&a[m-1][j]!='0'&&a[m+1][j]!='0'&&a[m][j-1]!='0'&&a[m][j+1]!='0'){
            a[m][j]='0'; 
        }
        cout<<a[m][j]<<' ';
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

 

0
朱优扬
朱优扬
中级天翼
中级天翼
#include <iostream>
#include <string>
using namespace std;
int m,n;
char a;
string s;
int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>a;
			s+=a;
		}
	}
	for(int i=1;i<s.size();i++)
		if(s[i-1]=='+'&&s[i]=='*'&&s[i+1]=='+')
			s[i]='0';
	for(int i=0;i<s.size();i++)
		cout<<s[i]<<" ";
    return 0;
} 

你试试吧!反正我也是顺手写的……

朱优扬在2020-11-04 20:03:45追加了内容

好像不对……

朱优扬在2020-11-04 20:04:05追加了内容

你还是别是了

朱优扬在2020-11-04 20:05:15追加了内容

这个测试点有点水……

朱优扬在2020-11-04 20:05:21追加了内容

这个测试点有点水……

我要回答