Initiate

Call A Spade a Spade
posts - 14, comments - 3, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

3752 字母旋转

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 查看评论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理