C2第五次作业解题报告

看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量

http://www.cnblogs.com/newbe/

http://www.cnblogs.com/newbe/p/4069834.html

http://www.cnblogs.com/newbe/p/4072005.html

求赞求祝福啊!!!

http://www.cnblogs.com/newbe/p/4058097.html

软工老师太狠心,还请可怜一下同课不同命的我们吧~点一下文章末尾的推荐什么的呗,有个回复什么的就更好了!

1、序列的第n项

显然暴力会超时,这是一道类似贪心构造的题解

每次计算当前数字的k倍的各位数的和,模仿竖式乘法即可(但是不产生新数组,可能越界也没必要)

然后计算两种差值,如果为正的话,那么可以直接搞,从后向前每一位尽量贪心补成最大值,直到把差值补全,注意一些小细节

如果为负的话,还是贪心的构造,我们从个位起开始累加数位和,直至该值大于pre_sum(之前数位和)-sum(*k后的数位和),大于该值后,向数组的下一位进1,若进1之前下一位就已经为9,则继续不停向前进位,(注意过程中每个经过的数位都应该将其清0),那么该数中需要变化的最高位确定后,就可以类似差值(此时差值为当前记录的总数位和-1+之前负的差值)大于0时的操作

然后for循环贪心搞个n-1次即可

2、放置正方形

显然暴力会超时,这是一道水题

由于格子只可能是0或1,那么我们只要开个二维数组存1*1~x*y的矩形的各个点和即可,这时对于每个点,只要确定x,y到x+i,y+i的一个正方形中所有点和是否含有0即可,判断方法就是如果点和大于0的话就无法放置正方形(可以把读入的1和0取异或,即1表示有障碍)

1*1~x*y的矩形的各个点和很好求,画图即可,x,y到x+i,y+i的一个正方形中所有点和同理

3、Gray码

方法都告诉你了,直接模拟即可,真没什么好讲的

4、矩阵乘法B

这次的矩阵之间没有了空行,其实还是没啥可说的,先读入一行确定了k,那么m就是总行数-k

然后就像之前那样搞就好了..

无聊的题

5、单词连接

这题还有有一定的技术含量的,课件上也已经讲过了,

其实就是并查集+欧拉回路的性质,欧拉回路和欧拉通路的判定可以总结为如下:
1)所有的点联通
2)欧拉回路中所有点的入度和出度一样。
3)欧拉通路中起点的入度 - 出度 = 1,终点的 初度 - 入度 = 1, 其他的所有点入度 = 出度;

还是不知道怎么写的话可以看hdu上的同类型一道题:hdu 1116

hdu 1116的题解我就不贴了,大家自行百度

上一篇:ThreadPoolExecutor源码分析二


下一篇:【C++基础】sizeof 数组 指针 空NULL