传送

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

(1前面有三个空格)

这真是一群闲(qian)圈(zou)的人。大号+小号提交了不下10遍终于a了

好了我们来研究一下这些数字"美观"的构造

单独截取一个数字:

(k=2)

我们发现"|"与"-"不在同一列上(hin重要),而且k是原数字的竖线和横线的总长度,是整个数字的宽度。

在样例中,"1"的前面有三个空格,显然1比较特殊,我们来研究一下1的摆放

第一个1前面有4个空格,其他的1前面有5个空格。

结合样例,我们可以得出1是右对齐(也就是前面要有k+1个空格),不是第一个数字的1因为多了一个空格,所以前面是k+2个空格。

接下来我们就可以打表了(蒟蒻只会打表)

我们用cnt记录当前的字符在答案中的哪一列(第一个1前面的空格没有算在内,在最后会处理),同时会发现有很多数字有一些神奇的结构(见下图)

就是有三组"-",两组在同一列上的"|",所以我们可以把这种方式写成两个函数。

  1. void work()//三组"-"
  2. {
  3. for(int j=;j<=k;j++)//规律画一画可得
  4. ans[][cnt+j]='-',ans[+k][cnt+j]='-',ans[+*k][cnt+j]='-';
  5. return ;
  6. }
  7. void lie()//两组"|"
  8. {
  9. for(int j=;j<=*k;j++)
  10. ans[+j][cnt]='|';
  11. ans[+k][cnt]=' ';
  12. return ;
  13. }

以及蒟蒻太过蒟蒻,全是1的情况只能特判掉

细节神马的见代码吧

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int k,cnt,one;
  4. string cc;
  5. char ans[][];
  6. void work()
  7. {
  8. for(int j=;j<=k;j++)
  9. ans[][cnt+j]='-',ans[+k][cnt+j]='-',ans[+*k][cnt+j]='-';
  10. return ;
  11. }
  12. void lie()
  13. {
  14. for(int j=;j<=*k;j++)
  15. ans[+j][cnt]='|';
  16. ans[+k][cnt]=' ';
  17. return ;
  18. }
  19. int main()
  20. {
  21. cin>>k;
  22. cin>>cc;
  23. cnt=;
  24. for(int i=;i<cc.length();i++)
  25. if(cc[i]=='')one++;//one统计1的个数,如果全是1,就特判掉
  26. if(one==cc.length())
  27. {
  28. printf("\n");
  29. for(int e=;e<=k;e++)
  30. {
  31. for(int j=;j<=cc.length();j++)
  32. {
  33. for(int i=;i<=k+;i++)
  34. printf(" ");
  35. printf("|");
  36. printf(" ");
  37. }
  38. printf("\n");
  39. }
  40. printf("\n");
  41. for(int e=;e<=k;e++)
  42. {
  43. for(int j=;j<=cc.length();j++)
  44. {
  45. for(int i=;i<=k+;i++)
  46. printf(" ");
  47. printf("|");
  48. printf(" ");
  49. }
  50. printf("\n");
  51. }
  52. return ;
  53. }
  54. for(int i=;i<cc.length();i++)
  55. {
  56. if(cc[i]=='')//把10个字符打表打出来
  57. {
  58. if(one!=cc.length())
  59. cnt+=k+;//空格十分之恶心
  60. lie();
  61. cnt+=;
  62. }
  63. if(cc[i]=='')
  64. {
  65. work();
  66. for(int j=;j<=k;j++)
  67. ans[+k+j][cnt]='|';
  68. cnt+=k;cnt++;
  69. for(int j=;j<=k;j++)
  70. ans[+j][cnt]='|';
  71. cnt+=;
  72. }
  73. if(cc[i]=='')
  74. {
  75. for(int j=;j<=k;j++)
  76. ans[][cnt+j]='-',ans[+*k][cnt+j]='-';
  77. lie();
  78. cnt+=k;cnt++;
  79. lie();
  80. cnt+=;
  81. }
  82. if(cc[i]=='')
  83. {
  84. work();
  85. cnt+=k;cnt++;
  86. lie();
  87. cnt+=;
  88. }
  89. if(cc[i]=='')
  90. {
  91. for(int j=;j<k;j++)
  92. ans[+j][cnt]='|';
  93. for(int j=;j<=k;j++)
  94. ans[+k][cnt+j]='-';
  95. cnt+=k;cnt++;
  96. lie();
  97. cnt+=;
  98. }
  99. if(cc[i]=='')
  100. {
  101. work();
  102. for(int j=;j<k;j++)
  103. ans[+j][cnt]='|';
  104. cnt+=k;cnt++;
  105. for(int j=;j<k;j++)
  106. ans[+k+j][cnt]='|';
  107. cnt+=;
  108. }
  109. if(cc[i]=='')
  110. {
  111. work();
  112. lie();
  113. cnt+=k;cnt++;
  114. for(int j=;j<k;j++)
  115. ans[+k+j][cnt]='|';
  116. cnt+=;
  117. }
  118. if(cc[i]=='')
  119. {
  120. for(int j=;j<=k;j++)
  121. ans[][cnt+j]='-';
  122. cnt+=k;cnt++;
  123. lie();
  124. cnt+=;
  125. }
  126. if(cc[i]=='')
  127. {
  128. work();
  129. lie();
  130. cnt+=k;cnt++;
  131. lie();
  132. cnt+=;
  133. }
  134. if(cc[i]=='')
  135. {
  136. work();
  137. for(int j=;j<k;j++)
  138. ans[+j][cnt]='|';
  139. cnt+=k;cnt++;
  140. lie();
  141. cnt+=;
  142. }
  143. }
  144.  
  145. for(int i=;i<=+*k;i++)
  146. {
  147. if(one==cc.length())//前面要处理空格
  148. {printf(" ");
  149. }
  150. for(int j=;j<=cnt;j++)
  151. {
  152. if(ans[i][j]=='\0')ans[i][j]=' ';//把没有赋值的地方标记成空格
  153. cout<<ans[i][j];
  154. }
  155. cout<<endl;
  156. }
  157. }

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. FreeMarker三宗罪之优缺点

    FreeMarker是Quake Wang推荐我使用的.刚学FreeMarker的时候,发现freemarker真的很棒!简单易用,功能强大.但是用它做了几个项目以后开始不爽了. 一宗罪:freema ...

  2. __bridge

    Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举 ...

  3. linux MySql 主从异步复制

    [root@localhost ~]# hostname master.allentuns ###SLAVE 执行 [root@localhost ~]# sed -i 's@\(HOSTNAME=\ ...

  4. mkdir -建立目录

    总览 mkdir [选项] 目录... POSIX 选项: [-p] [-m mode] GNU 选项(缩写): [-p] [-m mode] [--verbose] [--help] [--vers ...

  5. 数据仓库Hive(一)——hive简介,产生,安装

    1.Hive简介 数据仓库 解释器.编译器.优化器等 运行时,元数据存储在关系型数据库里面 1.1数据库和数据仓库的区别 数据库需要立即返回结果,数据仓库不需要 数据仓库能收纳各种数据源,而数据库只能 ...

  6. systemd 相关及服务启动失败原因

    1 查看启用的units systemctl list-unit-files | grep enabled 2 查看指定服务的日志 按服务单元过滤 journalctl -u j   查看j.serv ...

  7. python 获取系统环境变量 os.environ and os.putenv

    从一段code说起 “if "BATCH_CONFIG_INI" in os.environ:” 判断环境变量的值有没有定义 如果定义的话就去环境变量的值,否则就取当前目录下的co ...

  8. DevExpress v18.2版本亮点——Office File API 篇

    行业领先的.NET界面控件——DevExpress v18.2版本亮点详解,本文将介绍了DevExpress Office File API v18.2 的版本亮点,新版30天免费试用!点击下载> ...

  9. MySQL的运行模式及一些特性,引擎、事务、并发控制、优化总结

    一 MySQL总体架构 上图是<高性能MySQL>中对MySQL总体架构的描述,客户端对服务端的连接有很多条,有一个专门的处理组件,类似tomcat使用线程池处理请求.解析器负责解析sql ...

  10. 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 ...