1030: Hungar的时尚球场
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 14 Solved: 8
[ Submit][ Status][ Web Board]
Description
从NBA新秀训练中心回来以后,Hungar意识到自己的水平还不足以在NBA立足,于是他决定每天去球场练习。
这天他来到一个球场,却发现这个球场十分破旧不堪,这让他无法忍受,在他看来这个球场应该是这样的: 球场的大小是n*n,而且这个球场应该被大写的英文字母所填充,填充规则是这样的,球场的最外面一圈用'A'填充,里面一圈用'B'填充,....., 直到球场被填满,如果填到'Z'棋盘还没 满的话,接下来用的就又是'A',‘B’..以此类推
现在告诉你球场的大小,请告诉Hungar填满以后的球场是什么样子的。
Input
第一行一个整数T(T <=100), 代表有T组数据.
对于每一组数据,包含一个整数n(1 <= n <= 100).
Output
第一行输出”Case #X: ”(不包括引号),X代表第X组数据
n行,每行n个字符,代表填充以后的球场.
Sample Input
2
2
3
Sample Output
Case #1:
AA
AA
Case #2:
AAA
ABA
AAA
题目本身很简单,就是需要耐心不停地调试来控制变量的范围。与HDU2074叠框很相似
,但又稍有不同。本想拿那道代码来当模版的,想想还是算了,简单的还是自己写吧。
写的比叠框那代码要好。简单易懂。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<queue> #include<set> #include<map> #include<sstream> #include<algorithm> #include<cmath> #include<cstdlib> using namespace std; char list[600][600]; int n; void change(const int &x,const int &y,const char &c)//按顺序包边上→,左↑,右←,右↓ { for (int i=x; i<=n-1-x; i++) { list[x][i]=c; } for (int i=n-y-1; i>=y; i--) { list[i][y]=c; } for (int i=n-1-x; i>=x; i--) { list[n-1-x][i]=c; } for (int i=y; i<=n-1-y; i++) { list[i][n-1-y]=c; } } int main (void) { int t,i,j; char c; cin>>t; for (int q=1; q<=t; q++) { memset(list,0,sizeof(list));//清空一下 cin>>n; c='A'; for (int i=0; i<=n/2; i++) { if(c>'Z') c-=26; change(i,i,c); c++; } cout<<"Case #"<<q<<":"<<endl; for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { cout<<list[i][j]; } cout<<endl; } } return 0; }