POJ 3752 字母旋转游戏

来源:互联网 发布:c语言第四版答案完整版 编辑:程序博客网 时间:2024/06/04 23:21

给定两个整数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

做之前可以参照一下lnj的紫书“蛇形填数”

注意格式,很容易PE。

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int s[1005][1005];int main(){    int n,m;    cin>>n>>m;    int k=0,j=0,i=1;    memset(s,0,sizeof(s));    while(k<n*m)    {        while(j<m&&!s[i][j+1])          s[i][++j]=++k;        while(i<n&&!s[i+1][j])          s[++i][j]=++k;        while(j>1&&!s[i][j-1])          s[i][--j]=++k;        while(i>1&&!s[i-1][j])          s[--i][j]=++k;    }    for(int i=1;i<=n;i++)    {        for(int j=1;j<=m;j++)          printf("   %c",(s[i][j]-1)%26+'A');    //注意格式        printf("\n");    }    return 0;}
0 0
原创粉丝点击