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;
}