Posted on 2010-02-16 21:46
Initiate 阅读(375)
评论(0) 编辑 收藏 引用
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
T S R Q P O N M L
#include<iostream>
#include<cmath>
using namespace std;
int m,n;
char p[1300][1300];
int goi[4]={0,1,0,-1};
int goj[4]={1,0,-1,0};
int main()
{
cin>>m>>n;
int i=0,j,k=0,x=1,y=1;
memset(p,'0',sizeof(p));
while(1)
{
if(p[x][y]=='0'&&x<=m&&x>=1&&y<=n&&y>=1)
{
p[x][y]='A'+i%26;
i++;
if(i==m*n)break;
x += goi[k];y += goj[k];
}
else
{
x -=goi[k];y -= goj[k];
k=(k+1)%4;
x += goi[k];y += goj[k];
}
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
if(j==n) cout<<" "<<p[i][j]<<endl;
else cout<<" "<<p[i][j];}
}
阅读全文
类别:Poj 查看评论