7-1 九宫格密码 (100 分)

随着智能手机的普及,各种应用也层出不穷,安卓的九宫格密码就是其中之一。安卓的九宫格密码可以看做是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;
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值