传送

输入输出样例:(洛咕的太丑了就不放了)

(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迎春舞会之数字舞蹈的更多相关文章

  1. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  2. 洛谷 P1538 迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  3. P1538 迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  4. Luogu P1538 迎春舞会之数字舞蹈 | 模拟

    题目链接 大水题,暴力输出,代码应该能看吧...... #include<iostream> #include<cstdio> using namespace std; int ...

  5. VIJOS-P1064 迎春舞会之数字舞蹈

    洛谷 P1538 迎春舞会之数字舞蹈 洛谷传送门 JDOJ 1245: VIJOS-P1064 迎春舞会之数字舞蹈 JDOJ传送门 Description ​ 在越来越讲究合作的时代,人们注意的更多的 ...

  6. 【洛谷P1538】迎春舞会之数字舞蹈

    迎春舞会之数字舞蹈 题目链接 一道奇怪的模拟题, 先将样例输出复制下来,观察观察 -- -- -- -- -- -- -- -- ① | | | | | | | | | | | | | | ② | | ...

  7. 题解洛谷P1538【迎春舞会之数字舞蹈】

    方法:暴力,判断,输出 本题为了更好理解建议各位可以复制样例来研究,甚至可以复制题解来测试思想,相信大家不会抄. 有什么不好的请大佬们在评论里指出,谢谢 #include <bits/stdc+ ...

  8. tyvj1191 迎春舞会之三人组舞

    背景     HNSDFZ的同学们为了庆祝春节,准备排练一场舞 描述     n个人选出3*m人,排成m组,每组3人.    站的队形——较矮的2个人站两侧,最高的站中间.    从对称学角度来欣赏, ...

  9. Vijos P1061 迎春舞会之三人组舞 DP

    题目链接:https://vijos.org/p/1061 n个人选出3*m人,排成m组,每组3人. 站的队形——较矮的2个人站两侧,最高的站中间. 从对称学角度来欣赏,左右两个人的身高越接近,则这一 ...

随机推荐

  1. 基于bs4库的HTML标签遍历方法

    基于bs4库的HTML标签遍历方法 import requests r=requests.get('http://python123.io/ws/demo.html') demo=r.text HTM ...

  2. P1219八皇后

    这个题是一道USACO的经典dfs,与我见面的时间起码七个月了. 放置n个皇后于n*n棋盘,他们不能互相吃(行,列,对角线),问有几种摆法?于是想到了dfs(自我认为有图的就不用DP).首先确定好了要 ...

  3. P1106删数游戏

    这道题曾经在CQOJ上考过,是第二次做了. 这是一道使用字符串的贪心题.首先要根据机组例子来确定:删除递增序列的最后一位.即循环找到那一位后,把后面的数往前压.所以我在艰难处理完双重循环后(这个处理不 ...

  4. H264 RTP包解析

    1.  预备 视频: 由一副副连续的图像构成,由于数据量比较大,因此为了节省带宽以及存储,就需要进行必要的压缩与解压缩,也就是编解码. h264裸码流: 对一个图像或者一个视频序列进行压缩,即产生码流 ...

  5. tensorflow学习笔记四----------构造线性回归模型

    首先通过构造随机数,模拟数据. import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 随机生成100 ...

  6. 思维体操: HDU1008 Elevator

    Elevator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  7. IDEA 增加对JPA的支持 执行JPQL语句

    IDEA 可以在控制台console中执行JPQL语句: 1. 在已存在的项目中选择项目结构: 2. 选择模块-指定实体所在的模块-选择上面的号 2. 选择要添加的模块:我们使用的是JPA,也可能有的 ...

  8. 03-Django-models

    # Models 模型 - ORM - ObjectRelationMap : 把面向对象思想转换成关系数据库思想.操作上把类等价于表格 - 类对应表格 - 类中的属性对应表中的字段 - 在应用中的m ...

  9. AF封装的关于一次请求上传多图到服务器!!!

    方式一:图片封装在模型数组中 /** *  上传多图到服务器 * *  @param URLString       请求地址 *  @param parameters      请求的其他参数 *  ...

  10. dockerfile制作笔记

    dockerfile语法格式:   FROM: 基础镜像(就是在什么镜像上面做)   MAINTAINER: 镜像创建者信息(作者的信息)   EXPOSE: 开放的端口   ENV: 设置变量   ...