题目描述
一个数组 $A$ 中存有 $N(>0)$ 个整数,在不允许使用另外数组的前提下,将每个整数循环向右移$M( \leq 0)$ 个位置,即将 $A$ 中的数据由 $A_0 A_1 \cdots A_{N-1}$ 变换为 $A_{N-M} \cdots A_{N-1} A_0 A_1 \cdots A_{N-M-1}$ (最后 $M$ 个数循环移至最前面的 $M$ 个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
恭喜你发现了本站的隐藏地点,在这里可以随便打滚玩耍留言
想问啥问啥(不一定回),挑一部分在正文中回复。挑选原则是没有原则,看心情。
关键还是多刷题。
这里推荐一本书,《算法笔记》,作者是胡凡/曾磊,该书按照不同题型重新编排了 PAT 的题目次序,通俗易懂地介绍了许多常用算法,并提供了很多甲级和乙级题目的题解,非常好读,适合小白,对刷题很有帮助。
再高阶一点,就是在算法正确后,研究能否对算法进行优化,减少执行时间。优化的算法在网上也都能搜到。
虽然背模板也能应付考试,但真正理解算法才有机会拿高分(网上也有很多人分享经验的,可以搜来看看)。关键还是多刷题,提高语法的熟练度能减少犯错,不然就要在考场光忙着找语法错误没时间做题了哈哈哈(我就是反面例子)。
熟练掌握 C++ 中 STL 相关的头文件对刷题非常有帮助,比如一些 C++ 的数据结构、排序算法和各种函数,相当好用。
有不懂的语法记得多去 www.cplusplus.com 翻翻文档,这里啥都有哦。