题目描述
逸夫楼的大厅的地面有10行10列的石砖,我们用坐标(x,y)来表示石砖的位置。如图示:
一天lxl在逸夫楼大厅玩跳格子游戏,跳格子游戏有7个动作:1.向左转,2向右转,3向后转,4向左跳一格,5向前跳一格,6向右跳一格,7向后跳一格。游戏前,lxl在(1,1)处并面向y轴正方向,他会做n次动作,若某个动作会让lxl跳出逸夫楼大厅则原地不动,每一次动作后都需要你输出lxl当前的位置。当n次动作都做完后,你还需要统计lxl到达过多少个格子。
输入
第一行输入n(0<n<101),表示lxl做的动作次数,接下来有n行,每行一个整数x(0<x<8)表示要做的动作。
输出
每次动作后输出lxl的当前坐标,一共有n行。随后的第n+1行输出lxl到达过的格子总数。
样例输入
7 5 4 1 7 3 2 6
样例输出
(1,2) (1,2) (1,2) (2,2) (2,2) (2,2) (1,2) 3
------------------------------------代码---------------------------------------
#include<stdio.h> #include<string.h> int main(){ int m,n,i,x=1,k,a,flag=1,y=1,count=0; scanf("%d",&k); int arr[102][102]; for(i=1;i<102;i++){ for(a=1;a<102;a++) arr[i][a]=0; } arr[1][1]=1; if(k>0&&k<101){ for(i=1; i<=k; i++){ m=x; n=y; scanf("%d",&a); if(a<8&&a>0){ if(flag==1){ if(a==1) flag=4; else if(a==2) flag=2; else if(a==3) flag=3; else if(a==4){ if(x==1) x=1; else x=x-1; } else if(a==5){ if(y==10) y=10; else y=y+1; } else if(a==6){ if(x==10) x=10; else x=x+1; } else if(a==7) { if(y==1) y=1; else y=y-1; } } else if(flag==2){ if(a==1) flag=1; else if(a==2) flag=3; else if(a==3) flag=4; else if(a==4){ if(y==10) y=10; else y+=1; } else if(a==5){ if(x==10) x=10; else x=x+1; } else if(a==6) { if(y==1) y=1; else y-=1; } else if(a==7){ if(x==1) x=1; else x-=1; } } else if(flag==3){ if(a==1) flag=2; else if(a==2) flag=4; else if(a==3) flag=1; else if(a==4){ if(x==10) x=10; else x=x+1; } else if(a==5){ if(y==1) y=1; else y=y-1; } else if(a==6){ if(x==1) x=1; else x=x-1; } else if(a==7){ if(y==10) y=10; else y=y+1; } } else if(flag==4){ if(a==1) flag=3; else if(a==2) flag=1; else if(a==3) flag=2; else if(a==4){ if(y==1) y=1; else y=y-1; } else if(a==5) { if(x==1) x=1; else x=x-1; } else if(a==6){ if(y==10) y=10; else y=y+1; } else if(a==7) { if(x==10) x=10; else x=x+1; } } arr[x][y]=1; printf("(%d,%d) ",x,y); } } } for(i=1;i<102;i++) { for(a=1;a<102;a++) { if(arr[i][a]==1) count++; } } printf("%d ",count); return 0; }