字母旋转游戏
给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:
A B C D E F G H
V W X Y Z A B I
U J K L M N C J
T I H G F E D K
S R Q P O N M L
Input:
M为行数,N为列数,其中M,N都为大于0的整数。
Output:
分行输出相应的结果
Sample Input:
4 9
Sample Output:
A B C D E F G H I
V W X Y Z A B C J
U J I H G F E D K
T S R Q P O N M L
代码
#include<iostream>
using namespace std;
int d1[4]={1,0,-1,0};
int d2[4]={0,1,0,-1};
int main(){
int n,m;
cin>>n>>m;
int x=0,y=0,d=0,p=0;
char ans[n][m];
int visit[n][m];
for(int i=0;i<n;++i){
for(int j=0;j<m;++j)
visit[i][j]=0;
}
while(d<n*m){
ans[x][y]='A'+d%26;
visit[x][y]=1;
x+=d2[p];
y+=d1[p];
if(visit[x][y]==1||x==n||y==m||x==-1||y==-1){
x-=d2[p];
y-=d1[p];
p=(p+1)%4;
x+=d2[p];
y+=d1[p];
}
d++;
}
for(int i=0;i<n;++i){
for(int j=0;j<m;++j){
cout<<" "<<ans[i][j];
}
cout<<endl;
}
return 0;
}