[タイトル]
制限時間:1.0秒メモリ制限:256.0メガバイト
十字ロゴ(ないICRC AH)の設計のための暁機構は、次の通り:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
他方の側も、マークの文字の形のコンピュータのDOSウィンドウで出力する必要があり、任意の数の層を制御することができます。
エントリー
3
輸出
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
アイデア解析
考える:観察し、それまでにレベルオーバーレイ方法。
階層被覆方法:一つの層が最外層から(底部層)、重畳されているが開始さ、相互作用を達成するために、によって二列の列 対向 マトリクスオーバーレイ被覆が 完成外側クロス次クロス、必要がなかった場合に、行われます注インデント。
このように、ほぼ完了した後。ブルー$「「赤い部分が表す」」を表し
詳細な手順
- まず、カバーの底面すべての「」(下記参照)
- 次の層を追加し、上記赤、青、カバーボトムの行列を追加することです。
クロスを形成する層を追加していきます。
そして、充填を完了しそう。ブルー「は埋めるために2つの回転、$」「赤い部分を表しています」。
同時に、トリックがあります!
使用対称性。
マトリックスは、とみなすことができるBは行列転置しました。このように、座標に沿って主対角線対称。
コード
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
char map[150][150];
cin >> n;
int r = 4 * n + 5; //矩阵长宽
int t = n + 1; //层的次数
//填好第一层
for(int i = 1; i <= r; i++){
for(int j = 1; j <= r; j++){
map[i][j] = '.';
}
}
//剩下一层一层填
for(int k = 1; k <= t; k++){
//遍历每一层
//以两层为一对,外层填 $ ,里层填 .
for(int i = 1 + 2 * k; i <= r - 2 * k; i++){
for(int j = 1 + 2 * k - 2; j <= r - (2 * k - 2); j++){
//对称性
map[i][j] = '$';
map[j][i] = '$';
}
}
for(int i = 1 + 2 * k + 1; i <= r - 2 * k - 1; i++){
for(int j = 1 + 2 * k - 1; j <= r - (2 * k - 2) - 1; j++){
//对称性
map[i][j] = '.';
map[j][i] = '.';
}
}
}
for(int i = 1; i <= r; i++){
for(int j = 1; j <= r; j++){
cout << map[i][j];
}
cout<<endl;
}
return 0;
}
概要
本当に学び、そしてこの方法は、最初の時間Iのこぎりでなく、蓄積がたくさんあります。