绿地装饰

题目描述
湖南中医药大学坐落于中国历史文化名城长沙,是湖南省重点建设本科院校,是全国首批设立国家级重
点学科的高校,也是首批招收博士研究生、留学生及港澳台学生的中医药院校。学校现有 2 个校区,占
地面积 1393 亩,建筑面积 52 万平方米,主校区依岳麓南坡,临湘江西岸,环境幽雅,风光秀丽,是求
学成才的理想之地。
校园景观设计师小 W 的主要工作就是植被环境的设计维护,他有一个 N×N 的模板图,他创作景观的步
骤如下:
1、将当前的绿地分成 N×N 小块,再按照模板图添加装饰(黑色表示有装饰,白色表示没有);
2、对于每个白色(未被装饰)的地块,递归操作 1,应用模板图,即分成更小的 N×N 块,继续进行装
饰,而黑色(已装饰)的地块则不必操作。
下图是某次装饰过程的示意图。

现在你的任务是求出 K 次递归后的绿地状态。

输入
单组数据。
第一行两个数 N,K,如题意中的描述。
接下来是一个 N×N 的模板图,’ . ’ 表示白色,’ * ’ 表示黑色。
2 ≤ n ≤ 3
1 ≤ k ≤ 5

输出
输出一个 N K×N K 的矩阵表示答案,不允许有多余的空行或空格。
样例输入

2 3
.*
..

样例输出

.*******
..******
.*.*****
....****
.***.***
..**..**
.*.*.*.*
........

ps:

这个题目刚刚看的时候以为就是一个简单的递归,后面实打实的被打脸,发现自己不会做。所以偷偷看大佬的题解,这个题目真心不错,看完之后久久不能~,所以特地来写一篇详细的题解。首先详细讲解一下非递归的代码,看完题目我们本能的想到用递归去做,确实,这非常符合递归,但是我想先说一下非递归的代码,因为这段代码花了我很长时间来理解。这段代码最主要的思想就是通过一个点构造一个2*2的矩阵,因为矩阵的大小是以2倍增长的,附上本人手工图, 第一次画,所以很丑很丑,溜了。

上面的图所代表的的思想就是下面代码实现的

#include <bits/stdc++.h>
using namespace std;
char w[300][300], ans[300][300], ww[8][8];
int main()
{int n, k, m;while (~scanf("%d%d", &n, &k)){for (int i = 0; i < n; ++i)scanf("%s", ww[i]);w[0][0] = '.'; //初始化m = 1;         //从一个点开始while (k--){for (int i = 0; i < m; ++i)for (int j = 0; j < m; ++j)if (w[i][j] == '.') //一个点变成四个点,每个点只做好自己的事就可以了{for (int a = 0; a < n; ++a)for (int b = 0; b < n; ++b)ans[i * n + a][j * n + b] = ww[a][b];}else{for (int a = 0; a < n; ++a)for (int b = 0; b < n; ++b)ans[i * n + a][j * n + b] = '*';}m = m * n; //每次变换都是原先的两倍for (int i = 0; i < m; ++i)for (int j = 0; j < m; ++j)w[i][j] = ans[i][j]; //把得到的结果赋给另一个数组方便下一次变换}for (int i = 0; i < m; ++i)printf("%s\n", ans[i]);}return 0;
}

递归

递归算法真的很难懂,只能自己理解!!!

将问题递归下去,化成很多个小的子问题再进行填数
void solve(int a, int b, int x,int len)表示对左上角为(a,b)层数为x,矩形边长为len的矩形填数

ps:

对于这个题目而言,区别就是填矩阵不同,与输出不同,它只会填满的是以一个点变成三个点和一个星星的矩阵,并不会填以一个星星变成四个星星的矩阵,所以我们要初始化所有的点都为星星,这样弥补了之前的不足,但是也正是因为这个原因,我们不能像非递归代码那样,用字符串输出,只能一个一个字符输出,因为我们把整个ans数组初始化了!!

#include <bits/stdc++.h>
using namespace std;
char ans[1005][1005], w[10][10];
int n, k;
void solve(int a, int b, int x, int len)
{len /= n;if (x == 1){ //如果已经到最后一层,填数,returnfor (int i = 1; i <= n; ++i)for (int j = 1; j <= n; ++j)ans[i + a - 1][j + b - 1] = w[i][j];return;}for (int i = 1; i <= n; ++i)for (int j = 1; j <= n; ++j)if (w[i][j] == '.'){ //如果是.递归填数int aa = a + (i - 1) * len, bb = b + (j - 1) * len;solve(aa, bb, x - 1, len);}
}
int main()
{while (~scanf("%d %d", &n, &k)){int len = pow(n, k);memset(ans, '*', sizeof(ans)); //默认全部填上*for (int i = 1; i <= n; ++i)scanf("%s", w[i] + 1); //从数组元素下标为1开始填数solve(1, 1, k, len);for (int i = 1; i <= len; ++i){for (int j = 1; j <= len; ++j)printf("%c", ans[i][j]);putchar('\n');}}return 0;
}

解密

题目描述
湖南中医药大学有含浦、东塘 2 个校区,学校办学历史悠久,前身为 1934 年的湖南国医专科学校,1953
年创办湖南中医进修学校,1960 年创建普通高等本科院校——湖南中医学院,1979 年成为全国首批取得
中医类研究生学历教育资格的院校,1990 年原湖南科技大学成建制并入湖南中医学院,2002 年与湖南省
中医药研究院合并,2006 年经教育部批准更名为湖南中医药大学,2012 年进入湖南省一本招生序列。
目前,学校与湖南省中医药研究院实行校院合一的管理体制。学校学科门类齐全、中医药特色鲜明。学校
设有 18 个学院、24 个本科专业,涵盖医、理、工、管、文等 5 大学科门类。中医诊断学在本学科研究领
域居国内领先水平。
小 F 居住在含浦校区,他想和东塘校区的同学小 L 聊天,为了保证沟通安全,他发明了一种加密方式,这
种加密方式是这样的:对于一个 01 串,小 F 会将其从左到右每 8 位分成一组,最后一组可能不足 8 位,
对每组进行逆序操作,即如果原来是 bLbL+1bL+2 · · · bR−1bR, 逆序之后变成 bRbR−1bR−2 · · · bL−1bL。现在
小 F 已经加密好了一个串,并且将其发给了小 L,你能帮助小 L 得到这串密文对应的原始信息吗?
输入
单组数据。
一行一个 01 串,代表加密后的字符串,串长度大于 0, 小于等于 100。
输出
一行字符串,代表加密后的字符串所对应的原始信。
样例输入
100010110011101
样例输出
110100011011100

ps:刚刚开始看的时候以为这是一个水题,其实它就是一个水题,但是当时连着wa了三发,这一下子让我冷静下来仔细思考,虽然思考后过了题目,但是事后看大佬的代码的时候我发现自己想的太复杂了,大佬简直了!此处膜拜~,下面附上我的和大佬的代码,为了表示尊敬,大佬最后出场,嘿嘿(坏笑)。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
int a[maxn];
char c[110];
int main()
{while (~scanf("%s", c)){int ls = strlen(c);int m = 0;while (m < ls){m += 8;if (m <= ls)for (int i = m - 1; i >= m - 8; --i)printf("%c", c[i]);else{for (int i = ls - 1; i >= ls - (ls % 8); --i)printf("%c", c[i]);}}printf("\n");}return 0;
}

这是大佬的代码

#include <bits/stdc++.h>
using namespace std;
int main()
{char c[1010];while (~scanf("%s", c)){int lc = strlen(c);for (int i = 0; i < lc; i += 8){for (int j = min(i + 7, lc - 1); j >= i; --j)printf("%c", c[j]);}printf("\n");}return 0;
}

emmmm,相比之下,我简直

时间能治愈一切,也能淡忘一切,所有的悲伤都会因为时间而淡忘~

第三届全国中医药院校大学生程序设计竞赛(部分题解)更新中~相关推荐

  1. 第三届全国中医药院校大学生程序设计竞赛 (正式赛)

    目录 Problem B. 绿地装饰(暴力模拟+思维) E 解密(水+有点巧妙的解法) F: 巍巍岳麓(类似最小生成树) H: 百舸争流(贪心) Problem B. 绿地装饰(暴力模拟+思维) 时间 ...

  2. 第三届全国中医药院校大学生程序设计竞赛题解

    目录 A Welcome B 绿地装饰 C 击鼓传花 D 旅行(待补题) E 解密 F 巍巍岳麓(最小生成树) G Solution Sets(待补题) H 百舸争流(待补题) I 最长不下降子序列( ...

  3. 第二届全国中医药院校大学生程序设计竞赛

    目录 A 篮球队选拔 B 黑暗意志 C 调酒壶里的酸奶 D 过分的谜题 E 不存在的泳池 F fps游戏 G 流连人间的苏苏 H 路哥从不低头 (还没有写) I 闪闪发光 J 小C的数学问题 K 周期 ...

  4. 2019河北省大学生程序设计竞赛(部分题解)

    2019河北省大学生程序设计竞赛 B.Icebound and Sequence B题题解 G.点我 签到题 H.天神的密码 签到题 #include <iostream> #includ ...

  5. 2021中国大学生程序设计竞赛部分题解(CCPC)- 网络选拔赛(重赛)

    文章目录 一.1002 Kanade Doesn't Want to Learn CG 二.1004 Primality Test 三.1005 Monopoly 四.1006 Nun Heh Heh ...

  6. 浙江中医药大学第十二届大学生程序设计竞赛 部分题解

    Problem A. Jhadgre的C语言程序 helle 直接复制 Problem B. Wpremig的AH之战 博弈问题还没有学,待补 Problem C. Wpremig的三角形 没看这题, ...

  7. 第十五届吉林省大学生程序设计竞赛个人题解

    A. Random Number Checker 奇数和偶数的数量之差小于1即为Good B. Arithmetic Exercise 计算保留k位小数的a/b的结果 模拟除法即可,注意进位的细节 v ...

  8. HBCPC2021-河北省大学生程序设计竞赛-部分题解

    这里写目录标题 7-1 理财 7-2 B-棋盘 7-5 E-求导 7-8 H-信号传输 7-10 罚时算术 7-1 理财 签到题,用scanf和printf进行格式输出更简单 AC代码: #inclu ...

  9. 秦皇岛计算机编程大赛,关于举办第三届河北省大学生程序设计竞赛燕山大学选拔赛的通知...

    为提高我校本科生程序设计能力.选拔优秀学生组队参加"第三届河北省大学生程序设计竞赛(HCPC2019)",学校决定组织"第三届河北省大学生程序设计竞赛选拔赛", ...

最新文章

  1. Python源码学习:内建类型简析并简析int对象
  2. 卡方 matlab,matlab卡方分布 卡方检验(Chi-square test)及其MATLAB实现 - 余姚娱乐网
  3. 【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
  4. 从程序猿到SAP产品经理,我是如何转型的?
  5. Java 面向对象:构造器详解
  6. Linux开机启动的步骤
  7. Otsu算法原理及实现
  8. go mysql stmt exec_Go语言操作MySQL
  9. PAIP.FLEX与JAVA数据对应关系.txt
  10. c语言计算器括号怎么解决,C语言计算器,该如何解决
  11. 飞机大战素材素材素材
  12. HTML制作简易个人简历(表单)
  13. mysql nutch,nutch结合mysql配置
  14. 微信小程序│ 游戏开发 │连连看游戏
  15. Android用户注册界面设计
  16. Spring Boot (十一): Spring Boot 定时任务
  17. Python自动化修改word实例
  18. 基于CEP的量化交易平台建设
  19. 电子签约存证及印章管理整体化解决方案
  20. php编辑器浅色还是深色,程序员的IDE到底是浅色主题好还是深色主题好?

热门文章

  1. 用C语言编写5个学生,每个学生有3门课程成绩,从键盘输入学生数据(学号,姓名,3门成绩)计算平均成绩,将成绩放入磁盘文件stud中
  2. 马云点了人类史上最贵“外卖”,又一场“三国杀”即将来临?
  3. 去哪儿12306候补购票怎么用?
  4. git官网下载不了或下载很慢的解决办法!
  5. Shor算法 or量子傅里叶变换?
  6. 服务器如何释放虚拟内存,服务器如何释放虚拟内存
  7. java远程连接fpt_java远程连接本地fpt
  8. 用illustrator、AI将边框线转换为填充形状
  9. 科学型IT人才和工程型IT人才
  10. php警告注释,php程序(warning)警告