题目链接:

https://cn.vjudge.net/problem/UVA-227

 /*
问题 输入一个5*5的方格,其中有一些字母填充,还有一个空白位置,输入一连串
的指令,如果指令合法,能够得到一个移动后的方格就输出方格,不能就输出
“This puzzle has no final configuration.” 解题思路
模拟,一个一个的读入字符,包括空格,再读入若干行指令,如果指令表面合法,进入模拟看内容是否合法,不合法直接输出提示。 易错点
读入和控制结束问题,注意读入指令后有一个换行需要处理
输出格式,将换行放在谜题数前面
*/
#include<cstdio>
#include<cstring> int check(char *s);
int move(char e[][],int x, int y,char *s);
int main()
{
char e[][],s1[],s[],ch;
int i,j,flag,t=,x,y,lens;
while(){
for(i=;i<=;i++){
gets(e[i]+);
if(i == && e[][] == 'Z'){
return ;//控制结束
}
} //整合指令
memset(s,,sizeof(char)*);
memset(s1,,sizeof(char)*);
while(){
scanf("%s",s1);
strcat(s,s1);
lens=strlen(s);
if(s[lens-] == '')
break;
}
getchar();//注意吃掉一个换行 //找到空白位置
for(i=;i<=;i++){
for(j=;j<=;j++){
if(e[i][j] == ' '){
x=i;
y=j;
}
}
} if(t != )//注意格式
printf("\n"); printf("Puzzle #%d:\n",++t);
if(check(s)){
if(move(e,x,y,s))
for(i=;i<=;i++){
for(j=;j<=;j++){
if(j == )
printf("%c",e[i][j]);
else
printf(" %c",e[i][j]);
}
printf("\n");
}
else
printf("This puzzle has no final configuration.\n");
}
else
printf("This puzzle has no final configuration.\n");
}
return ;
} int move(char e[][],int x, int y,char *s){
int len=strlen(s),i;
for(i=;i<len-;i++){
if(s[i] == 'A'){
if(x- < ) return ;
e[x][y]=e[x-][y];
e[x-][y]=' ';
x--;
}
else if(s[i] == 'B'){
if(x+ > ) return ;
e[x][y]=e[x+][y];
e[x+][y]=' ';
x++;
}
else if(s[i] == 'R'){
if(y+ > ) return ;
e[x][y]=e[x][y+];
e[x][y+]=' ';
y++;
}
else if(s[i] == 'L'){
if(y- < ) return ;
e[x][y]=e[x][y-];
e[x][y-]=' ';
y--;
}
}
return ;
} int check(char *s)
{
int len=strlen(s),i;
for(i=;i<len-;i++){
if(s[i] != 'A' && s[i] != 'B' && s[i] != 'R' && s[i] != 'L')
return ;
}
return ;
}

最新文章

  1. mysql sleep进程过多,应用级配置
  2. js url.slice(star,end) url.lastIndexOf(&#39;/&#39;) + 1, -4
  3. linux shell重定向总结
  4. log4cplus 在配置文件中设置文件路径,程序自动创建目录,且在日志文件前按日期创建相应的目录
  5. Linux学习笔记17--Linux系统启动详解
  6. Linux IPC POSIX 消息队列
  7. BigDecimal 转换类型
  8. JSONCPP安装
  9. C#代理那点事儿
  10. UML: 协作图
  11. drupal CMS
  12. GodSon Easyui 结合Pluplaod插件的文件分割上传
  13. 程序员使用Node的十个技巧
  14. 用Servlet实现聊天室设计
  15. 批量 GBK 转 UTF8 java
  16. xtrabackup 2.0.8备份mysql5.1.65报错
  17. IntelliJ IDEA提示:Error during artifact deployment. See server log for details.
  18. Ajax异步信息抓取方式
  19. Java开发学习心得(二):Mybatis和Url路由
  20. PHP的运算符

热门文章

  1. Android中去掉标题栏
  2. Ajax登录用户名密码
  3. ASP.NET Web API 框架研究 ASP.NET 路由
  4. centos下添加epel源
  5. HDU 1556 区间查询
  6. 关于DFS和BFS的理解 以及坐标的定义
  7. Delphi获取公网IP地址函数
  8. dispatch_async 和dispatch_sync
  9. 三、winForm-DataGridView操作——DataGridView 操作复选框checkbox
  10. Asp.Net MVC EF之二:原生EF插入,更新数据的正确方法