这道题是个简单模拟题,也还行滴(要是有错的话及时回复啦~)
题目
其中输入到Z的时候输入结束
样例
输入
TRGSJ
XDOKI
M VLN
WPABE
UQHCF
ARRBBL0
Z
输出
TRGSJ
XOKLI
MDVBN
WP AE
UQHCF
思路:这道题难在输入的时候有空格和回车键的处理,可以用字符数组,将回车键和空格键都记录,然后就是在进行调整的时候也是很巧妙~好好学习哦(o゚v゚)ノ
代码如下:(_)
#include<string>
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
char s[5][5];
int x,y;
string m;
int main()
{
while(~scanf("%c",&s[0][0])&&s[0][0]!='Z')//对每次第一个输入的判断
{
int flag=1;
for(int i=1;i<30;i++)//这里可以将回车键也算字符输入
{
scanf("%c",&s[i/6][i%6]);//这里很巧妙撒
if(s[i/6][i%6]==' ')//记录空格的坐标
{
x=i/6;
y=i%6;
}
}
cin>>m;//输入执行指令
int len=m.length();
for(int i=0;i<len;i++)
{
if(m[len-1]=='0'||m[i]=='A'||m[i]=='B'||m[i]=='L'||m[i]=='R')//判断是否合法
{
if(m[i]=='A')
{
s[x][y]=s[x-1][y];
s[--x][y]=' ';//这里很巧妙撒,其实也可以s[x-1][y]=' ';
}
if(m[i]=='B')
{
s[x][y]=s[x+1][y];
s[++x][y]=' ';
}
if(m[i]=='L')
{
s[x][y]=s[x][y-1];
s[x][--y]=' ';
}
if(m[i]=='R')
{
s[x][y]=s[x][y+1];
s[x][++y]=' ';
}
}
else flag=0;
}
if(flag)
{
for(int i=0;i<5;i++)//最后输出啦~
{
for(int j=0;j<5;j++)
printf("%c",s[i][j]);
printf("\n");
}
}
else
printf("This puzzle has no final configuration.\n");
}
return 0;
}