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个人站两侧,最高的站中间. 从对称学角度来欣赏,左右两个人的身高越接近,则这一 ...
随机推荐
- C++ static、const和static const类型成员变量声明以及初始化
C++ static.const和static const 以及它们的初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. sta ...
- 7.golang的字符串 string
golang 字符串为不可变的量 ,字符串定义要使用双引号 package main import "fmt" func main() { var xx string = 'xxx ...
- windows和linux安装rabbitmq
一.windows安装rabbitmq 1.安装erlang 点击进入官网下载:http://erlang.org/download/ 2.安装rabbitmq 点击进入官网下载:http://www ...
- tab栏切换效果运用案例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- BrokenPipeError: [Errno 32] Broken pipe
运行Pytorch tutorial代码报错:BrokenPipeError: [Errno 32] Broken pipe 源代码地址: Training a classifier (CIFAR10 ...
- 洛谷 P1896 [SCOI2005]互不侵犯 (状态压缩DP)
题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 注:数据有加强(2018/4/25) ...
- 1134. Vertex Cover (25)
A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at le ...
- Insomni'hack teaser 2019 - Misc - curlpipebash
参考链接 https://ctftime.org/task/7454 题目 Welcome to Insomni'hack teaser 2019! Execute this Bash command ...
- GNU ARM eclipse 安装--Linux 版本
官方网站:https://gnu-mcu-eclipse.github.io/ 1. 工具链安装 1.1 xpm 安装 安装 nodejs: sudo apt-get install nodejs s ...
- LAMP架构编译安装过程详解
linux Git 安装 1.安装git依赖包 . yum install -y perl-ExtUtils-MakeMaker package . yum install -y tcl build- ...