0
已解决
小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追加了内容
这个测试点有点水……