Children's Day
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 10 Accepted Submission(s) : 5
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Today is Children's Day. Some children ask you to output a big letter 'N'. 'N' is constituted by two vertical linesand one diagonal. Each pixel of this letter is a character orderly. No tail blank is allowed.
For example, this is a big 'N' start with 'a' and it's size is 3.
Your task is to write different 'N' from size 3 to size 10. The pixel character used is from 'a' to 'z' continuously and periodic('a' is reused after 'z').
For example, this is a big 'N' start with 'a' and it's size is 3.
a e bdf c g
Your task is to write different 'N' from size 3 to size 10. The pixel character used is from 'a' to 'z' continuously and periodic('a' is reused after 'z').
Input
This problem has no input.
Output
Output different 'N' from size 3 to size 10. There is no blank line among output.
Sample Output
[pre] a e bdf c g h n i mo jl p k q ......... r j [/pre]
Hint
Not all the resultsare listed in the sample. There are just some lines. The ellipsis expresseswhat you should write.
Source
2013 ACM/ICPC Asia Regional Online —— Warmup
样例中怎么给,我们就跟着怎么做,模拟输出图形。该题属于比较简单的。字母从a开始一直到z,再从a开始,所以我们只要用一个全局变量 char s='a'。对于每个'N'图形,先最左边竖着在数组中填字母,然后从左上角向右上角填字母,最后从最右边竖着填字母。记得判断s的值,如果大于'z',要重新赋值为’a' .
代码:
#include <iostream>
#include <string.h>
using namespace std;
char tu[11][11];
char s='a';
void output(int n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
tu[i][j]=' ';//初始化数组
for(int i=1;i<=n;i++)//最左边竖着填字母
{
tu[i][1]=s++;
if(s>'z')
s='a';
}
for(int i=n-1;i>=2;i--)//斜着从左向右填字母
{
tu[i][n-i+1]=s++;
if(s>'z')
s='a';
}
for(int i=1;i<=n;i++)//最右边竖着填字母
{
tu[i][n]=s++;
if(s>'z')
s='a';
}
for(int i=1;i<=n;i++)//输出“N'图形
{
for(int j=1;j<=n;j++)
cout<<tu[i][j];
cout<<endl;
}
}
int main()
{
for(int i=3;i<=10;i++)
output(i);
return 0;
}
运行截图: