• 蓝桥杯 PREV-2 打印十字图


    题目链接:

    PREV-2 打印十字图

    思路:

    我们注意到我们只需要求出整张图的1/4个矩形,即可通过对称求出整张图;
    以整张图的中心为坐标原点, 我们以右上角的1/4矩形为例,层数i0开始一直到n,第i层的轨迹就是从(0,2i+2)(0, 2 * i + 2)开始往右打印2i+12 * i +1$,然后依次往下、往下、往右打印三个$,然后往右挪一格,从该格开始往下打印2 * i + 1$
    将每层打印好,然后按对称的规律输出即可;

    代码:

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int n;
    bool c[100][100];
    
    int main() {
    #ifdef MyTest
    	freopen("Sakura.txt", "r", stdin);
    #endif
    	cin >> n;
    	for(int i = 0; i <= n; i++) {
    		int x = -1, y = 2 * i + 2, cnt = 2 * i + 1;
    		for(int j = 0; j < cnt; j++) c[++x][y] = 1;
    		c[x][--y] = 1; c[x][--y] = 1; c[++x][y] = 1; ++x;
    		for(int j = 0; j < cnt; j++) c[x][y--] = 1;
    	}
    	int d = 2 * n + 3;
    	vector<string> v;
    	for(int i = d - 1; i >= 0; i--) {
    		string s = "";
    		for(int j = d - 1; j >= 0; j--) s += c[j][i] ? '$' : '.';
    		for(int j = 1; j <= d - 1; j++) s += c[j][i] ? '$' : '.';
    		cout << s << '
    ';
    		v.push_back(s);
    	}
    	for(int i = d - 2; i >= 0; i--) cout << v[i] << '
    ';
    	return 0;
    }
    
  • 相关阅读:
    nodejs发送http请求
    Codeforces Round #655 (Div. 2)
    闇の連鎖 树上LCA + 树上差分
    Tree 换根dp
    「水」悠悠碧波 kmp
    HH的项链
    Educational Codeforces Round 90 (Rated for Div. 2)
    巡逻(论为什么第二次求直径要用dp)
    Codeforces Round #651 (Div. 2)
    Treap板子
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308621.html
Copyright © 2020-2023  润新知