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; }?
總結
以上是生活随笔為你收集整理的7-1 九宫格密码 (100 分)的全部內容,希望文章能夠幫你解決所遇到的問題。