华容道(huarong)

文章讲述了小童通过L,R,U,D字符描述的八数字华容道还原过程,要求编写程序还原初始状态。输入是还原步骤数量和操作序列,输出是还原前的华容道布局。
摘要由CSDN通过智能技术生成
题目描述

小童是一个喜欢数字华容道的女生。 数字华容道游戏是一种最早的滑块类游戏,常见的类型有十五数字推盘游戏和八数字推盘游戏等。十五数字华容道游戏的板上会有十五个方块和一个大小相当于一个方块的空位(供方块移动之用)。而八数字华容道游戏,为九宫格布局,有八个方块和一个空位(如图1)。

在小童十岁生日的当天,小童的叔叔送给了她一块八数字华容道游戏作为生日礼物。

在送给小童之前,叔叔打乱了这块华容道,想要小童还原它。

聪明的小童当然立刻就还原了,并且还记下了还原的过程。

第二天上学的时候,小童告诉了你她还原的过程,想要学习信息学竞赛的你编写一个程序回答她,叔叔送她的华容道在小童开始还原之前是什么样的。

具体的,小童还原一共有 n 步,每一步可以用一个字符表示:

第i个字符如果是‘L’,则表示小童第i次是把空位左边的块移到了空位;

第i个字符如果是‘R’,则表示小童第i次是把空位右边的块移到了空位;

第i个字符如果是‘U’,则表示小童第i次是把空位上边的块移到了空位;

第i个字符如果是‘D’,则表示小童第i次是把空位下边的块移到了空位。

另外,小童是一个诚实的孩子,所以她告诉你的还原过程一定是合法的。

输入
第一行一个整数n,表示小童整个还原过程共 n 步。 第二行为一个长度为n的字符串S,第i个字符表示了小童第i步是怎么操作的 。
输出

三行三个整数,每行两个整数之间有一个空格,表示华容道一开始的样子,空位的位置用0填充。

样例输入 Copy

4
LURD
样例输出 Copy

1 2 3
4 8 5
7 6 0
提示

对于10% 的数据,n=0;

对于30% 的数据,n≤1;

另有30% 的数据,S中只含有‘L’和‘R’两种字符;

对于所有数据,0≤n≤50,S中只含有‘L’、‘R’、‘U’和‘D’四种字符。

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

int a[3][3]={{1,2,3},{4,5,6},{7,8,0}}; 
int main()
{
	int i,j,x=2,y=2,n;
	cin>>n;
	string s;
	cin>>s;
	for(i=n-1;i>=0;i--)
	{
		if(s[i]=='L')
		{
			swap(a[x][y],a[x][y+1]);
			y++;
		}
		else if(s[i]=='R')
		{
			swap(a[x][y],a[x][y-1]);
			y--;
		}
		else if(s[i]=='U')
		{
			swap(a[x][y],a[x+1][y]);
			x++;
		}
		else 
		{
			swap(a[x][y],a[x-1][y]);
			x--;
		}
	}
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
			cout<<a[i][j]<<" ";
		cout<<"\n";
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值