P1538迎春舞会之数字舞蹈
输入输出样例:(洛咕的太丑了就不放了)
(1前面有三个空格)
这真是一群闲(qian)圈(zou)的人。大号+小号提交了不下10遍终于a了
好了我们来研究一下这些数字"美观"的构造
单独截取一个数字:
(k=2)
我们发现"|"与"-"不在同一列上(hin重要),而且k是原数字的竖线和横线的总长度,是整个数字的宽度。
在样例中,"1"的前面有三个空格,显然1比较特殊,我们来研究一下1的摆放
第一个1前面有4个空格,其他的1前面有5个空格。
结合样例,我们可以得出1是右对齐(也就是前面要有k+1个空格),不是第一个数字的1因为多了一个空格,所以前面是k+2个空格。
接下来我们就可以打表了(蒟蒻只会打表)
我们用cnt记录当前的字符在答案中的哪一列(第一个1前面的空格没有算在内,在最后会处理),同时会发现有很多数字有一些神奇的结构(见下图)
就是有三组"-",两组在同一列上的"|",所以我们可以把这种方式写成两个函数。
- void work()//三组"-"
- {
- for(int j=;j<=k;j++)//规律画一画可得
- ans[][cnt+j]='-',ans[+k][cnt+j]='-',ans[+*k][cnt+j]='-';
- return ;
- }
- void lie()//两组"|"
- {
- for(int j=;j<=*k;j++)
- ans[+j][cnt]='|';
- ans[+k][cnt]=' ';
- return ;
- }
以及蒟蒻太过蒟蒻,全是1的情况只能特判掉
细节神马的见代码吧
- #include<bits/stdc++.h>
- using namespace std;
- int k,cnt,one;
- string cc;
- char ans[][];
- void work()
- {
- for(int j=;j<=k;j++)
- ans[][cnt+j]='-',ans[+k][cnt+j]='-',ans[+*k][cnt+j]='-';
- return ;
- }
- void lie()
- {
- for(int j=;j<=*k;j++)
- ans[+j][cnt]='|';
- ans[+k][cnt]=' ';
- return ;
- }
- int main()
- {
- cin>>k;
- cin>>cc;
- cnt=;
- for(int i=;i<cc.length();i++)
- if(cc[i]=='')one++;//one统计1的个数,如果全是1,就特判掉
- if(one==cc.length())
- {
- printf("\n");
- for(int e=;e<=k;e++)
- {
- for(int j=;j<=cc.length();j++)
- {
- for(int i=;i<=k+;i++)
- printf(" ");
- printf("|");
- printf(" ");
- }
- printf("\n");
- }
- printf("\n");
- for(int e=;e<=k;e++)
- {
- for(int j=;j<=cc.length();j++)
- {
- for(int i=;i<=k+;i++)
- printf(" ");
- printf("|");
- printf(" ");
- }
- printf("\n");
- }
- return ;
- }
- for(int i=;i<cc.length();i++)
- {
- if(cc[i]=='')//把10个字符打表打出来
- {
- if(one!=cc.length())
- cnt+=k+;//空格十分之恶心
- lie();
- cnt+=;
- }
- if(cc[i]=='')
- {
- work();
- for(int j=;j<=k;j++)
- ans[+k+j][cnt]='|';
- cnt+=k;cnt++;
- for(int j=;j<=k;j++)
- ans[+j][cnt]='|';
- cnt+=;
- }
- if(cc[i]=='')
- {
- for(int j=;j<=k;j++)
- ans[][cnt+j]='-',ans[+*k][cnt+j]='-';
- lie();
- cnt+=k;cnt++;
- lie();
- cnt+=;
- }
- if(cc[i]=='')
- {
- work();
- cnt+=k;cnt++;
- lie();
- cnt+=;
- }
- if(cc[i]=='')
- {
- for(int j=;j<k;j++)
- ans[+j][cnt]='|';
- for(int j=;j<=k;j++)
- ans[+k][cnt+j]='-';
- cnt+=k;cnt++;
- lie();
- cnt+=;
- }
- if(cc[i]=='')
- {
- work();
- for(int j=;j<k;j++)
- ans[+j][cnt]='|';
- cnt+=k;cnt++;
- for(int j=;j<k;j++)
- ans[+k+j][cnt]='|';
- cnt+=;
- }
- if(cc[i]=='')
- {
- work();
- lie();
- cnt+=k;cnt++;
- for(int j=;j<k;j++)
- ans[+k+j][cnt]='|';
- cnt+=;
- }
- if(cc[i]=='')
- {
- for(int j=;j<=k;j++)
- ans[][cnt+j]='-';
- cnt+=k;cnt++;
- lie();
- cnt+=;
- }
- if(cc[i]=='')
- {
- work();
- lie();
- cnt+=k;cnt++;
- lie();
- cnt+=;
- }
- if(cc[i]=='')
- {
- work();
- for(int j=;j<k;j++)
- ans[+j][cnt]='|';
- cnt+=k;cnt++;
- lie();
- cnt+=;
- }
- }
- for(int i=;i<=+*k;i++)
- {
- if(one==cc.length())//前面要处理空格
- {printf(" ");
- }
- for(int j=;j<=cnt;j++)
- {
- if(ans[i][j]=='\0')ans[i][j]=' ';//把没有赋值的地方标记成空格
- cout<<ans[i][j];
- }
- cout<<endl;
- }
- }
P1538迎春舞会之数字舞蹈的更多相关文章
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷 P1538 迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- P1538 迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- Luogu P1538 迎春舞会之数字舞蹈 | 模拟
题目链接 大水题,暴力输出,代码应该能看吧...... #include<iostream> #include<cstdio> using namespace std; int ...
- VIJOS-P1064 迎春舞会之数字舞蹈
洛谷 P1538 迎春舞会之数字舞蹈 洛谷传送门 JDOJ 1245: VIJOS-P1064 迎春舞会之数字舞蹈 JDOJ传送门 Description 在越来越讲究合作的时代,人们注意的更多的 ...
- 【洛谷P1538】迎春舞会之数字舞蹈
迎春舞会之数字舞蹈 题目链接 一道奇怪的模拟题, 先将样例输出复制下来,观察观察 -- -- -- -- -- -- -- -- ① | | | | | | | | | | | | | | ② | | ...
- 题解洛谷P1538【迎春舞会之数字舞蹈】
方法:暴力,判断,输出 本题为了更好理解建议各位可以复制样例来研究,甚至可以复制题解来测试思想,相信大家不会抄. 有什么不好的请大佬们在评论里指出,谢谢 #include <bits/stdc+ ...
- tyvj1191 迎春舞会之三人组舞
背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞 描述 n个人选出3*m人,排成m组,每组3人. 站的队形——较矮的2个人站两侧,最高的站中间. 从对称学角度来欣赏, ...
- Vijos P1061 迎春舞会之三人组舞 DP
题目链接:https://vijos.org/p/1061 n个人选出3*m人,排成m组,每组3人. 站的队形——较矮的2个人站两侧,最高的站中间. 从对称学角度来欣赏,左右两个人的身高越接近,则这一 ...
随机推荐
- FreeMarker三宗罪之优缺点
FreeMarker是Quake Wang推荐我使用的.刚学FreeMarker的时候,发现freemarker真的很棒!简单易用,功能强大.但是用它做了几个项目以后开始不爽了. 一宗罪:freema ...
- __bridge
Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举 ...
- linux MySql 主从异步复制
[root@localhost ~]# hostname master.allentuns ###SLAVE 执行 [root@localhost ~]# sed -i 's@\(HOSTNAME=\ ...
- mkdir -建立目录
总览 mkdir [选项] 目录... POSIX 选项: [-p] [-m mode] GNU 选项(缩写): [-p] [-m mode] [--verbose] [--help] [--vers ...
- 数据仓库Hive(一)——hive简介,产生,安装
1.Hive简介 数据仓库 解释器.编译器.优化器等 运行时,元数据存储在关系型数据库里面 1.1数据库和数据仓库的区别 数据库需要立即返回结果,数据仓库不需要 数据仓库能收纳各种数据源,而数据库只能 ...
- systemd 相关及服务启动失败原因
1 查看启用的units systemctl list-unit-files | grep enabled 2 查看指定服务的日志 按服务单元过滤 journalctl -u j 查看j.serv ...
- python 获取系统环境变量 os.environ and os.putenv
从一段code说起 “if "BATCH_CONFIG_INI" in os.environ:” 判断环境变量的值有没有定义 如果定义的话就去环境变量的值,否则就取当前目录下的co ...
- DevExpress v18.2版本亮点——Office File API 篇
行业领先的.NET界面控件——DevExpress v18.2版本亮点详解,本文将介绍了DevExpress Office File API v18.2 的版本亮点,新版30天免费试用!点击下载> ...
- MySQL的运行模式及一些特性,引擎、事务、并发控制、优化总结
一 MySQL总体架构 上图是<高性能MySQL>中对MySQL总体架构的描述,客户端对服务端的连接有很多条,有一个专门的处理组件,类似tomcat使用线程池处理请求.解析器负责解析sql ...
- SPOJ-GSS1-Can you answer these queries 1
链接: https://vjudge.net/problem/SPOJ-GSS1 题意: You are given a sequence A[1], A[2], ..., A[N] . ( |A[i ...