这道题是个简单模拟题,也还行滴(要是有错的话及时回复啦~)

题目

习题 3-5 谜题其中输入到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;
}

相关文章:

  • 2022-12-23
  • 2021-08-03
  • 2022-12-23
  • 2021-08-09
  • 2021-10-04
  • 2021-07-04
  • 2021-05-22
猜你喜欢
  • 2021-09-12
  • 2022-12-23
  • 2021-12-15
  • 2022-01-10
  • 2021-08-12
  • 2021-11-27
  • 2021-06-17
相关资源
相似解决方案