给定两个整数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 LInput M为行数,N为列数,其中M,N都为大于0的整数。 Output 分行输出相应的结果 Sample Input
4 9Sample 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;}新闻热点
疑难解答