今天你的任务是编程序画箭头图案,箭头一共有四个方向,分别用大写字母L表示朝左,R表示朝右,U表示朝上以及D表示朝下,对于给定的正整数n(n<=100),箭头图案的大小是长和宽各是4n-1,图案中空余地方用空格填充,用来表示箭头部分用给定的字符填充。
如下所示分别是n为2、3、4、5时的星号箭头:
本问题有多组测试数据,每组测试数据只有一行,分别是用空格隔开的一个正整数n和两个字符,第一个字符表示朝向,一定是L、R、U、D之一,后一个字符是填充的字符。
Sample Input
5 R $
Sample Output
$
$$
$$$
$$$$
$$$$$
$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$
$$$$$
$$$$
$$$
$$
$
代码
#include <bits/stdc++.h>
using namespace std;
int n,m;
char s[1005][1005];
int main()
{
char x,y;
while(~scanf("%d %c %c",&n,&x,&y))
{
int m=(2*n-1)+2*n;
for(int i=1;i<=2*n-1;i++)
{
for(int j=1;j<=m;j++)
{
if(j<=n||j>n+2*n-1)s[i][j]=' ';
else s[i][j]=y;
}
}
for(int i=2*n;i<=4*n-1;i++)
{
for(int j=1;j<=m;j++)
{
if(j<(i-2*n+1)||j>m-(i-2*n+1)+1)s[i][j]=' ';
else s[i][j]=y;
}
}
if(x=='R')
{
for(int i=1;i<=m;i++)
{
for(int j=1;j<=4*n-1;j++)
putchar(s[j][i]);
puts("");
}
}
else if(x=='L')
{
for(int i=1;i<=m;i++)
{
for(int j=4*n-1;j>=1;j--)
putchar(s[j][i]);
puts("");
}
}
else if(x=='D')
{
for(int i=1;i<=4*n-1;i++)
{
for(int j=1;j<=m;j++)
putchar(s[i][j]);
puts("");
}
}
else
{
for(int i=4*n-1;i>=1;i--)
{
for(int j=1;j<=m;j++)
putchar(s[i][j]);
puts("");
}
}
}
return 0;
}