7-1 九宫格密码 (100 分)
隨著智能手機的普及,各種應(yīng)用也層出不窮,安卓的九宮格密碼就是其中之一。安卓的九宮格密碼可以看做是3×3點陣中的一條路徑,只要你在畫的時候,不經(jīng)過重復(fù)的點,同時不跳過途中必須要經(jīng)過的點,那么這條路徑幾乎是無所不能的。
現(xiàn)在就請你寫一段程序?qū)⑦@條路經(jīng)轉(zhuǎn)換成相應(yīng)的密碼。我們這里做一個限制,就是在畫這條路經(jīng)時,從一個點到另一個點,無論是橫向還是縱向每次最多移動一個格。也就是說如果我們按程序設(shè)計的習(xí)慣用(0,0)表示左上角的點,那么從它出發(fā)可能的移動只有三個,即可以移動到(0,1)、(1,0)和(1,1)三個點,而不能像真實的九宮格密碼那樣可以移動到(1,2)(2,1)等點。
輸入格式:
為兩行,第一行為兩個整數(shù),代表起始點坐標(biāo),其中(0,0)代表左上角,(0,1)代表第一行中間,(0,2)代表右上角,(1,0)代表第二行最左等等,其余以此規(guī)律類推。第二行為長度最長為8的字符串,代表每次移動的方向。字符串中僅可能含有 ‘1’、 ‘2’、 ‘3’、 ‘4’、 ‘6’、 ‘7’、 ‘8’、 ‘9’八種字符,其中‘1’代表向左下移動、‘2’代表向下移動、‘3’代表向右下移動,‘4’代表向左移動,‘6’代表向右移動、‘7’代表向左上移動、‘8’代表向上移動、‘9’代表向右上移動。輸入保證合法,不存在移到九宮格以外的可能。
輸出格式:
僅一行,為上述輸入的路徑所代表的密碼。其中每個點所代表的數(shù)字同手機鍵盤,也就是說(0,0)點為1,(0,1)點為2,(0,2)點為3,(1,0)點為4等等。
輸入樣例:
0 0 661166輸出樣例:
在這里給出相應(yīng)的輸出。例如:
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; }?
總結(jié)
以上是生活随笔為你收集整理的7-1 九宫格密码 (100 分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。