习题3-5 谜题
2016-07-25 20:26
453 查看
题目:
有一个5*5的网格,其中恰好有一个格子是空的,其他格子各有一个字母。一共有4种指
令:A, B, L, R,分别表示把空格上、下、左、右的相邻字母移到空格中。输入初始网格和指
令序列(以数字0结束),输出指令执行完毕后的网格。如果有非法指令,应输出“This
puzzle has no final configuration.”。
心得:
1、WA了很长时间,最后从网上找了几组测试数据发现是第一个格子就是空格的情况没有考虑进去。
2、读题!认真读题!
代码:
#include"stdio.h"
#include"string.h"
int main()
{
int i,j,s=0,l=1,p;
char a[7][7],b[1001],c;
while(scanf("%c",&a[0][0]))
{
if(a[0][0]=='Z') break;
j=0,p=1;
s=0;
for(i=1;i<30;i++)
{
scanf("%c",&a[i/6][i%6]);
if(a[i/6][i%6]==' ')
s=i/6*10+i%6;
}
for(i=0;scanf("%c",&b[i])==1&&b[i]!='0';i++);
scanf("%c",&c);
for(j=0;j<i;j++)
{
if(b[j]=='B')
{
if(s/10+1>4)
{p=0;break;}
a[s/10][s%10]=a[s/10+1][s%10];
a[s/10+1][s%10]=' ';
s=(s/10+1)*10+s%10;
}
if(b[j]=='A')
{
if(s/10-1<0)
{p=0;break;}
a[s/10][s%10]=a[s/10-1][s%10];
a[s/10-1][s%10]=' ';
s=(s/10-1)*10+s%10;
}
if(b[j]=='R')
{
if(s%10+1>4)
{p=0;break;}
a[s/10][s%10]=a[s/10][s%10+1];
a[s/10][s%10+1]=' ';
s=(s/10)*10+s%10+1;
}
if(b[j]=='L')
{
if(s%10-1<0)
{p=0;break;}
a[s/10][s%10]=a[s/10][s%10-1];
a[s/10][s%10-1]=' ';
s=(s/10)*10+s%10-1;
}
}
if(l>1)
printf("\n");
printf("Puzzle #%d:\n",l++);
if(p==0)
printf("This puzzle has no final configuration.\n");
if(p==1)
for(i=0;i<5;i++)
{
printf("%c",a[i][0]);
for(j=1;j<5;j++)
printf(" %c",a[i][j]);
printf("\n");
}
}
}
有一个5*5的网格,其中恰好有一个格子是空的,其他格子各有一个字母。一共有4种指
令:A, B, L, R,分别表示把空格上、下、左、右的相邻字母移到空格中。输入初始网格和指
令序列(以数字0结束),输出指令执行完毕后的网格。如果有非法指令,应输出“This
puzzle has no final configuration.”。
心得:
1、WA了很长时间,最后从网上找了几组测试数据发现是第一个格子就是空格的情况没有考虑进去。
2、读题!认真读题!
代码:
#include"stdio.h"
#include"string.h"
int main()
{
int i,j,s=0,l=1,p;
char a[7][7],b[1001],c;
while(scanf("%c",&a[0][0]))
{
if(a[0][0]=='Z') break;
j=0,p=1;
s=0;
for(i=1;i<30;i++)
{
scanf("%c",&a[i/6][i%6]);
if(a[i/6][i%6]==' ')
s=i/6*10+i%6;
}
for(i=0;scanf("%c",&b[i])==1&&b[i]!='0';i++);
scanf("%c",&c);
for(j=0;j<i;j++)
{
if(b[j]=='B')
{
if(s/10+1>4)
{p=0;break;}
a[s/10][s%10]=a[s/10+1][s%10];
a[s/10+1][s%10]=' ';
s=(s/10+1)*10+s%10;
}
if(b[j]=='A')
{
if(s/10-1<0)
{p=0;break;}
a[s/10][s%10]=a[s/10-1][s%10];
a[s/10-1][s%10]=' ';
s=(s/10-1)*10+s%10;
}
if(b[j]=='R')
{
if(s%10+1>4)
{p=0;break;}
a[s/10][s%10]=a[s/10][s%10+1];
a[s/10][s%10+1]=' ';
s=(s/10)*10+s%10+1;
}
if(b[j]=='L')
{
if(s%10-1<0)
{p=0;break;}
a[s/10][s%10]=a[s/10][s%10-1];
a[s/10][s%10-1]=' ';
s=(s/10)*10+s%10-1;
}
}
if(l>1)
printf("\n");
printf("Puzzle #%d:\n",l++);
if(p==0)
printf("This puzzle has no final configuration.\n");
if(p==1)
for(i=0;i<5;i++)
{
printf("%c",a[i][0]);
for(j=1;j<5;j++)
printf(" %c",a[i][j]);
printf("\n");
}
}
}
相关文章推荐
- NKOI 2090 游戏
- CodeForces 289A Polo the Penguin and Segments
- 面试题52: 构建乘积数组
- 【POJ2533】Longest Ordered Subsequence(LIS-最长上升子序列/DP)
- 浮动与清浮动
- Linux 常见命令(一)
- Ueditor angularjs化过程记录(重点在于验证)
- iOS之 多线程中的NSThread
- Tomcat性能监控工具Probe Quick Start
- 好厉害 http://blog.csdn.net/zq602316498/
- hdu 4287 Intelligent IME
- Python(List和Tuple类型)
- C++中隐式转换和显示转换
- Python3.x 爬虫学习笔记——判断网页的编码方式
- 第一章 绪论
- Java自动内存管理机制(三) 对象、引用
- 称重传感器的参数及使用方法
- POJ-1363-Rails
- Visual Studio Express 2013 for Windows Desktop 将c文件生成.dll动态链接库
- cocos creator -- 指定自定义事件