字母旋转游戏
Description
给定两个整数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
TS R Q P O N M L
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[100][100];
int temp=0;
int fun(int n,int m)
{
int i,j;
for(i=1;i<n;i++)
{
for(j=i;j<=m-i+1;j++)
{
if(a[i][j]==0)
{
a[i][j]=('A'+(temp%26));
temp++;
}
}
for(int k=i+1;k<=n-i+1;k++)
{
if(a[k][m-i+1]==0)
{
a[k][m-i+1]=('A'+(temp%26));
temp++;
}
}
// getchar();
for(int k=m-i;k>=i;k--)
{
if(a[n-i+1][k]==0)
{
a[n-i+1][k]=('A'+(temp%26));
temp++;
}
}
for(int k=n-i;k>i;k--)
{
if(a[k][i]==0)
{
a[k][i]=('A'+(temp%26));
temp++;
}
}
// break;
}
}
int main()
{
int n,m,i,j;
while(cin>>n>>m)
{
temp=0;
memset(a,0,sizeof(a));
fun(n,m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
printf("%4c",a[i][j]);
cout<<endl;
}
}
return 0;
}