蓝桥杯 打印十字
来源:互联网 发布:东软信息学院域名 编辑:程序博客网 时间:2024/05/17 17:54
问题描述小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$$.$$$.$$...$.......$...$$$$.$$$$$$$$$.$$$..$...........$....$$$$$$$$$$$$$..对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。输入格式一个正整数 n (n<30) 表示要求打印图形的层数。输出格式对应包围层数的该标志。样例输入11样例输出1..$$$$$....$...$..$$$.$.$$$$...$...$$.$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$..样例输入23样例输出2..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$$.$$$.$$...$.......$...$$$$.$$$$$$$$$.$$$..$...........$....$$$$$$$$$$$$$..提示请仔细观察样例,尤其要注意句点的数量和输出位置。
模拟题 刚开始死活没看出来十字在哪,发现怎么走之后就可以推出来了。
我的想法是先固定中间十字的位置,
..$$$$$....$...$..$$$.$.$$$$...$...$$*$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$..
然后从上面的*位置开始走,点走一圈,$走一圈。
#include <cstdio>#include <cstring>#include <iostream>using namespace std;char ans[200][200];int N;int solve(int i,int j,char c){ while(ans[i][j+1] != '\0') ans[--i][j] = c; while(ans[i][j+1] == '\0') ans[i][++j] = c; while(ans[i][j+1] != '\0') ans[--i][j] = c; while(ans[i+1][j] != '\0') ans[i][++j] = c; while(ans[i+1][j] == '\0') ans[++i][j] = c; while(ans[i+1][j] != '\0') ans[i][++j] = c; while(ans[i][j-1] != '\0') ans[++i][j] = c; while(ans[i][j-1] == '\0') ans[i][--j] = c; while(ans[i][j-1] != '\0') ans[++i][j] = c; while(ans[i-1][j] != '\0') ans[i][--j] = c; while(ans[i-1][j] == '\0') ans[--i][j] = c; while(ans[i-1][j] != '\0') ans[i][--j] = c; while(ans[i-1][j] == '\0') ans[--i][j] = c;}int main(){ cin >> N; int ilen = 5+4*N; memset(ans,'\0',sizeof(ans)); int a = ilen/2-2; for(int i = a; i <= (ilen/2+2); i++) { ans[i][ilen/2] = '$'; ans[ilen/2][i] = '$'; } int x = ilen/2 - 2; for(int i = 0; i < N; i++) { solve(ilen/2,--x,'.'); solve(ilen/2,--x,'$'); } ans[0][0] = ans[0][1] = ans[1][0] = ans[1][1] = '.'; ans[ilen-1][0] = ans[ilen-1][1] = ans[ilen-2][0] = ans[ilen-2][1] = '.'; ans[0][ilen-1] = ans[0][ilen-2] = ans[1][ilen-1] = ans[1][ilen-2] = '.'; ans[ilen-1][ilen-1] = ans[ilen-1][ilen-2] = ans[ilen-2][ilen-1] = ans[ilen-2][ilen-2] = '.'; for(int i = 0; i < 5+4*N ;i++) { for(int j = 0; j < 5+4*N ;j ++) cout<<ans[i][j]; cout<<endl; } return 0;}
0 0
- 蓝桥杯:打印十字图
- 蓝桥杯:打印十字图
- 蓝桥杯:打印十字图
- 蓝桥杯 打印十字图
- 蓝桥杯之打印十字
- 蓝桥杯打印十字图
- 蓝桥杯 打印十字图
- 蓝桥杯:打印十字图
- 蓝桥杯 打印十字图
- 蓝桥杯-打印十字图
- 蓝桥杯 十字图打印
- 蓝桥杯 打印十字图
- 蓝桥杯 打印十字图
- 蓝桥杯 打印十字图
- 蓝桥杯打印十字
- 蓝桥杯 打印十字图
- 蓝桥杯 打印十字
- 【蓝桥杯】【打印十字图】
- Ext 行高亮
- android studio碰到的问题
- [CF785D]Anton and School
- 计算机编程好学吗 需要什么基础知识?
- C++ string的trim, split方法
- 蓝桥杯 打印十字
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
- 第八单元总结
- 聊聊人生.2014.04.07
- spring aop
- CentOS常用命令
- Java实现快速排序
- 从今天起_温故知新_C基础回顾
- Xen的学习二