問題描述
小明爲某機構設計了一個十字型的徽標(並非紅十字會啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
對方同時也需要在電腦dos窗口中以字符的形式輸出該標誌,並能任意控制層數。
輸入格式
一個正整數 n (n<30) 表示要求打印圖形的層數。
輸出格式
對應包圍層數的該標誌。
樣例輸入1
1
樣例輸出1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
樣例輸入2
3
樣例輸出2
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示
請仔細觀察樣例,尤其要注意句點的數量和輸出位置。
這題好久之前就看到過了,被嚇的不敢做。。。
打印圖案的都是找規律,然後輸出。這題由於樣例的原因,是長方形的,不好發現規律,在每一個字符後面加一個空格就好看多了。
這樣就好看多了
#include<cstdio>
#include<cstring>
using namespace std;
const int N=505;
const int inf=0x3f3f3f3f;
char a[N][N];
int main()
{
int n,i,j,k,x,y,cnt=0;
scanf("%d",&n);
memset(a,'.',sizeof(a));
for(i=1;i<=n;i++){
for(j=i*2+1;j<=2*(n+1)+1;j++){
a[i*2-1][j]=a[j][i*2-1]='$';
}
}
for(i=1;i<=n+1;i++){
int t=i*2+1;
a[t][t]=a[t-1][t]=a[t-2][t]=a[t][t-1]=a[t][t-2]='$';
}
for(i=1;i<=2*(n+1)+1;i++){
for(j=1;j<=2*(n+1)+1;j++)
printf("%c",a[i][j]);
for(j=2*(n+1);j>=1;j--)
printf("%c",a[i][j]);
printf("\n");
}
for(i=2*(n+1);i>=1;i--){
for(j=1;j<=2*(n+1)+1;j++)
printf("%c",a[i][j]);
for(j=2*(n+1);j>=1;j--)
printf("%c",a[i][j]);
printf("\n");
}
return 0;
}