藍橋杯-歷屆試題-列印十字圖
阿新 • • 發佈:2019-01-02
歷屆試題 列印十字圖
問題描述
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
輸入格式
一個正整數 n (n<30) 表示要求列印圖形的層數。
輸出格式
對應包圍層數的該標誌。
樣例輸入1
1
樣例輸出1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$.. 樣例輸入2 3 樣例輸出2 ..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示
請仔細觀察樣例,尤其要注意句點的數量和輸出位置。
小明為某機構設計了一個十字型的徽標(並非紅十字會啊),如下所示:
..$$$$$$$$$$$$$....$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
對方同時也需要在電腦dos視窗中以字元的形式輸出該標誌,並能任意控制層數。
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$.. 樣例輸入2 3 樣例輸出2 ..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
#include<iostream> using namespace std; int fuck(int i, int j, int len) { //將圖一分為四隻看左上角部分 //上下對稱過去 原圖下半部分的橫座標對稱到圖的上半部分 if (i > len / 2 + 1) { i = len / 2 + 1 - (i - (len / 2 + 1)); } //左右對稱過去 原圖右半部分的縱座標對稱到圖的左半部分 if (j > len / 2 + 1) { j = len / 2 + 1 - (j - (len / 2 + 1)); } //每個角上的四個點 if (i <= 2 && j <= 2) return 0; //上下左右每一層連續的部分 連續不拐彎的部分 if (i % 2 == 1 && j > i + 1 || j % 2 == 1 && i>j + 1) return 1; //其餘部分 拐彎部分的三個'$' if (i > 1 && i % 2 == 1 && j == i || i > 1 && i % 2 == 1 && j == i - 1 || j > 1 && j % 2 == 1 && i == j || j > 1 && j % 2 == 1 && i == j - 1) return 1; return 0; } int main() { int n; cin >> n; int len = 4 * n + 5; //邊長 for (int i = 1; i <= 4 * n + 5; i++) { for (int j = 1; j <= 4 * n + 5; j++) { if (fuck(i, j, len)) { cout << "$"; } else { cout << "."; } } cout << endl; } return 0; }