PAT (Basic Level) 1008 数组元素循环右移问题 (20 分)
发布日期:2021-05-04 01:05:22
浏览次数:19
分类:技术文章
本文共 1590 字,大约阅读时间需要 5 分钟。
1.题目描述—
2.思路解析
1、首先可以将这个问题看作把数组ab转换成数组ba(其中a代表数组中前n-p个元素,b代表数组中余下的p个元素,p为循环右移元素个数,n为数组长度)。
先对ab整体求逆,参照数学中的求逆可知:(ab)-1 = b-1a-1 ;然后分别对a和b求逆置,可得 ( b-1)-1 (a-1 )-1 =ba; 2、在逆置之前应该首先判断右移的位数,如果右移位数是数组长度的整数倍,则直接将数组元素输出即可。3.代码
class Program { static void Main(string[] args) { // 读入输入的元素 string[] s = Console.ReadLine().Split(' '); int[] nums = { int.Parse(s[0]), int.Parse(s[1]) }; string[] str = Console.ReadLine().Split(' '); // 此处注意:应该首先判断右移的位数,如果右移位数是数组长度的整数倍,则直接将 // 数组元素输出即可。 nums[1] %= nums[0]; if (nums[1] != 0) { Reverse(str, 0, nums[0] - 1); Reverse(str, 0, nums[1] - 1); Reverse(str, nums[1], nums[0] - 1); } for (int i = 0; i < str.Length - 1; i++) { Console.Write(str[i] + " "); } Console.Write(str[str.Length - 1]); Console.ReadKey(); } ////// 逆置数组元素 /// /// /// 开始下标 /// 结束下标 public static void Reverse(string[] str,int low,int high) { for (int i = 0; i < (high - low + 1) / 2; i++) { Swap(str, low + i, high - i); } } private static void Swap(string[] str, int i, int v) { string temp = str[i]; str[i] = str[v]; str[v] = temp; } }
4.总结
因为逆置之前并没有判断右移位数和数组长度的关系,导致部分测试没有通过,所以要注意这个细节:在逆置之前应该首先判断右移的位数,如果右移位数是数组长度的整数倍,则直接将数组元素输出即可。
转载地址:https://blog.csdn.net/weixin_45027619/article/details/116228018 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月01日 14时38分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
c 泛型与java泛型_C ++和Java中的“泛型”类型之间有什么区别?
2019-04-21
java 返回实体对象_java 封装返回结果实体类 返回结果以及错误信息
2019-04-21
java web 防止sql注入攻击_JavaWeb防注入知识点(一)
2019-04-21
java ssm 异常分类_SSM项目常见的异常与处理提示(一)
2019-04-21
java定义矩形类_Java定义矩形类
2019-04-21
java变量怎么变常量_Java的常量与变量是什么?怎么学习呀?
2019-04-21
java开发招聘试题_客户化开发招聘试题-Java开发.doc
2019-04-21
java jdk win10 1335_win10下安装java jdk,tomcat
2019-04-21
php中的变量名称用什么表示,PHP变量,方法,类等名称中的有效字符是什么?
2019-04-21
solr比mysql的优势_Solr与Elasticsearch的优缺点比较总结和归纳
2019-04-21
华为博士招聘上机考试题目_牛客网-华为-2020届校园招聘上机考试-3
2019-04-21
python中for可以做变量名吗_Python中使用动态变量名的方法
2019-04-21
mysql 日期转换天数_MySQL 日期操作 增减天数、时间转换、时间戳
2019-04-21
java对象去重复_JAVA中List对象去除重复值的方法
2019-04-21
java bss_[转] .bss段和.data段的区别
2019-04-21
java上传图片损坏_大神求助 上传图片后 图片损坏
2019-04-21