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个人站两侧,最高的站中间. 从对称学角度来欣赏,左右两个人的身高越接近,则这一 ...
随机推荐
- 补充[BNDSOJ]小p的数列
强烈安利gjz的题解,看一遍即可ac:传送门 进入重点: 为啥$to=(dp[i][k][ii]+dp[k+1][j][jj])/2$ 位运算重点:a&b=a+b-a|b 为啥呢? 例子: a ...
- Java创建二叉树
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/yeweiouyang/article/details/37814461 二叉树的值保存在数组中,以0 ...
- 深度学习之depthwise separable convolution,计算量及参数量
目录: 1.什么是depthwise separable convolution? 2.分析计算量.flops 3.参数量 4.与传统卷积比较 5.reference
- 算法trick
数组从头到尾的循环遍历: index=(index+1)%length 索引值增加定长,对长度取余,则形成头尾循环.
- C Makefile初学基础
# this is make file hello.out: max.o min.o hello.c gcc max.o min.o hello.c -o hello.out max.o:max.c ...
- centos 安装代理服务 proxy server squild
以下内容复制自https://blog.csdn.net/qingfengxulai/article/details/80853870 放置此处便于检索 1 安装 sudo yum install s ...
- nginx的配置和基本参数说明
16 117 118 119 120 121 122 123 #运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日 ...
- 构建游戏开发的大数据项目的流程demo图
- x86-x64寄存器及CallStack调用栈
Intel 32位体系结构(简称IA32)处理器包含8个通用寄存器,如下图所示: EIP是指令寄存器,指向处理器下条等待执行的指令地址(代码段内的偏移量),每次执行完相应汇编指令EIP值就会增加.EI ...
- IO操作基本步骤
package com.study02; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundE ...