字母旋转方阵
来源:互联网 发布:网络与新媒体专业方向 编辑:程序博客网 时间:2024/05/16 09:22
字母旋转方阵
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem 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
分行输出相应的结果,注意每行开始有1个空格,相邻两个字母之间有1个空格。
Example Input
4 9
Example 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
think:
这道题看着就让我想起了递归里面的一道题目(文章最后附上),然后就按照之前的思路循环输入数据,然后再输出,当然,超时了……
#include <bits/stdc++.h>using namespace std;char m1[] = "ZABCDEFGHIJKLMNOPQRSTUVWXY";char a[500][500];void f(int n, int m){ int i=1, j=1, top = 1; int k = 0; while(top<=m*n) { while(j<m-k&&top<=m*n&&a[i][j]=='\0') { a[i][j] = m1[top%26]; top++; j++; } while(i<n-k&&top<=m*n&&a[i][j]=='\0') { a[i][j] = m1[top%26]; top++; i++; } while(j>1+k&&top<=m*n&&a[i][j]=='\0') { a[i][j] = m1[top%26]; top++; j--; } while(i>2+k&&top<=m*n&&a[i][j]=='\0') { a[i][j] = m1[top%26]; top++; i--; } k++; } return ;}int main(){ int n, m; cin>>n>>m; f(n, m); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cout<<" "<<a[i][j]; } cout<<endl; } return 0;}/***************************************************User name: Result: Time Limit ExceededTake time: 1010msTake Memory: 0KBSubmit time: ****************************************************/
然后,看了别人的思路,才发现,很神奇,自己真的是没想到啊~
#include <stdio.h>int main(){ int m, n; int flag = 0; int num1 = 0, num2 = 1; int i = 0, j = 0; char s = 'A'; char a[31][31]; scanf("%d %d",&m,&n); a[0][0] = s; while(flag < m*n-1) { switch(num2%4) { case 1: ++j; if(j == n-num1-1) { num2++; } break; case 2: ++i; if(i == m-num1-1) { num2++; } break; case 3: --j; if(j == num1) { num2++; } break; case 0: --i; if(i == num1+1) { num2++; num1++; } break; } if(++s == 'Z'+1) s = 'A'; a[i][j]=s; flag++; } for(i=0; i<m; i++) { printf(" "); for(j=0; j<n; j++) { if(j!=n-1) printf("%c ", a[i][j]); else printf("%c", a[i][j]); } printf("\n"); }}
螺旋方阵
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
n×n的螺旋方阵当n=5和n=3时分别是如下的形式
请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
Input
输入第一行为整数m(0<m<10),代表有m组输入;
接下来是m行数据,每行输入一个n(0<n<11)。
Output
按照输入的次序,依次输出每一个n×n方阵(一个方阵的同一行数据之间以’\t’分隔)
两个输出方阵之间输出一个空行。
Example Input
1
4
Example Output
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
#include <iostream>using namespace std;int a[123][123];int p;void qr(int u, int d, int l, int r){ if(l<=r) { int i; for(i=l;i<=r;i++) a[u][i] = p++; for(i=u+1;i<d;i++) a[i][r] = p++; for(i=r;i>l;i--) a[d][i] = p++; for(i=d;i>u;i--) a[i][l] = p++; return qr(u+1, d-1, l+1, r-1); }}int main(){ int n, T; while(cin>>T) { while(T--) { cin>>n; p = 1; int i, j; qr(0, n-1, 0, n-1); for(i=0;i<n;i++) { for(j=0;j<n-1;j++) cout<<a[i][j]<<'\t'; cout<<a[i][j]<<'\n'; } } } return 0;}
- 字母旋转方阵
- 字母旋转方阵
- 2254字母旋转方阵
- 字母旋转方阵
- 旋转方阵
- 旋转方阵
- 旋转方阵妙解
- 旋转方阵问题
- 7.方阵旋转
- 5.方阵旋转
- 旋转方阵java编写
- 对方阵顺时针旋转
- 方阵旋转--蓝桥杯
- 数字旋转方阵
- 数字旋转方阵
- 方阵逆时针旋转
- 方阵旋转算法
- 【二维数组】旋转方阵
- python读取csv
- 1.7Fetch
- c++作业6
- 字符串倒排(java)
- 选择题
- 字母旋转方阵
- JS form 表单收集 数据 formSerialize
- Universal-Image-Loader出现oom
- Java知识点
- [PHP学习] 初识PHP
- 【Redis笔记-7】整合Redis与Spring框架
- 尺取法入门2 poj2100 Graveyard Design
- Not Equal on a Segment CodeForces
- ssm:拦截器