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个人站两侧,最高的站中间. 从对称学角度来欣赏,左右两个人的身高越接近,则这一 ...
随机推荐
- Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式
Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式 解决: xlwt 中设置单元格样式主要 ...
- 1、Java语言概述与开发环境——编译和运行第一个程序HelloWorld.java
编写一个Java程序到运行的步骤概述: 1.将Java代码编写到扩展名为.Java的文件中 2.通过Javac命令对该Java文件进行编译 3.通过Java命令对生成的class文件进行运行 一.编写 ...
- Paper Reading_Distributed System
最近(以及预感接下来的一年)会读很多很多的paper......不如开个帖子记录一下读paper心得 Mark一个上海交通大学东岳网络工作室的paper notebook Mark一个大神的笔记 Ed ...
- 剑指offer-二叉树的镜像-python
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...
- 修改默认select样式
<style type="text/css"> .select_demo,.select_list { width: 400px; height: 60px; } .s ...
- Spring基础03——Spring IOC和DI概述
1.什么是IOC与DI IOC(Inversion of Control):其思想是反转资源获取方向,传统的资源查找方式要求组件想容器发起请求查找资源,作为回应,容器适时的返回资源,而应用了IOC之后 ...
- STM32内核简介
STM32F407 的内核是cortex-M4 采用的是ARM架构,具体是ARM-V7架构. 而ARM-V7架构分为三个系列: 1>.A系列:面向尖端的基于虚拟内存的操作系统和用户应用: 2 ...
- Codeforces1234F. Yet Another Substring Reverse(状压dp)
题目链接:传送门 思路: 由于只能翻转一次子串,就相当于找出两个不连续的子串,把在后面的一个子串翻转过来,和第一个子串拼接. 因为题目仅要求子串中的字符不重复,所以字符的先后顺序无关,翻转的操作就相当 ...
- pandas进阶
pandas是基于numpy构建的库,在数据处理方面可以把它理解为numpy的加强版,由于numpy主要用于科学计算,特长不在于数据处理,我们平常处理的数据一般带有列标签和index索引,这时pand ...
- x86-x64寄存器及CallStack调用栈
Intel 32位体系结构(简称IA32)处理器包含8个通用寄存器,如下图所示: EIP是指令寄存器,指向处理器下条等待执行的指令地址(代码段内的偏移量),每次执行完相应汇编指令EIP值就会增加.EI ...