随着智能手机的普及,各种应用也层出不穷,安卓的九宫格密码就是其中之一。安卓的九宫格密码可以看做是3×3点阵中的一条路径,只要你在画的时候,不经过重复的点,同时不跳过途中必须要经过的点,那么这条路径几乎是无所不能的。
现在就请你写一段程序将这条路经转换成相应的密码。我们这里做一个限制,就是在画这条路经时,从一个点到另一个点,无论是横向还是纵向每次最多移动一个格。也就是说如果我们按程序设计的习惯用(0,0)表示左上角的点,那么从它出发可能的移动只有三个,即可以移动到(0,1)、(1,0)和(1,1)三个点,而不能像真实的九宫格密码那样可以移动到(1,2)(2,1)等点。
输入格式:
为两行,第一行为两个整数,代表起始点坐标,其中(0,0)代表左上角,(0,1)代表第一行中间,(0,2)代表右上角,(1,0)代表第二行最左等等,其余以此规律类推。第二行为长度最长为8的字符串,代表每次移动的方向。字符串中仅可能含有 ‘1’、 ‘2’、 ‘3’、 ‘4’、 ‘6’、 ‘7’、 ‘8’、 ‘9’八种字符,其中‘1’代表向左下移动、‘2’代表向下移动、‘3’代表向右下移动,‘4’代表向左移动,‘6’代表向右移动、‘7’代表向左上移动、‘8’代表向上移动、‘9’代表向右上移动。输入保证合法,不存在移到九宫格以外的可能。
输出格式:
仅一行,为上述输入的路径所代表的密码。其中每个点所代表的数字同手机键盘,也就是说(0,0)点为1,(0,1)点为2,(0,2)点为3,(1,0)点为4等等。
输入样例:
0 0
661166
输出样例:
在这里给出相应的输出。例如:
1235789
#include<stdio.h>
int main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9},b[100]={0};
int i,j,count;
char ch[100]={0};
scanf("%d%d",&i,&j);
getchar();
gets(ch);
b[0]=a[i][j];
for(count=0;ch[count];count++)
{
if(ch[count]=='1')
{
i++;
j--;
b[count+1]=a[i][j];
}
if(ch[count]=='2')
{
i++;
b[count+1]=a[i][j];
}
if(ch[count]=='3')
{
i++;
j++;
b[count+1]=a[i][j];
}
if(ch[count]=='4')
{
j--;
b[count+1]=a[i][j];
}
if(ch[count]=='6')
{
j++;
b[count+1]=a[i][j];
}
if(ch[count]=='7')
{
i--;
j--;
b[count+1]=a[i][j];
}
if(ch[count]=='8')
{
i--;
b[count+1]=a[i][j];
}
if(ch[count]=='9')
{
i--;
j++;
b[count+1]=a[i][j];
}
}
for(count=0;b[count];count++)
printf("%d",b[count]);
return 0;
}