PAT1008数组元素循环右移问题(2,3测试点不过的解决办法)
PATB 1008
本篇描述三种解题代码供读者参考
第一种:使用大数组,控制输出,用截断的方法
不要犯笔者的错误,笔者一开始理解错了题意,想成了左移,已注释,也粘贴了上来
#include <iostream>
#include <bits/stdc++.h>
using namespace std;int A[1000000000];
//下为左移
/*int main(int argc, char **argv){int step = 0, count = 0;scanf("%d %d",&count,&step);for(int i = 0; i < count; i++){scanf("%d",&A[i]);}int len = count + step;for(int i = 0; i < step; i++){A[count+i] = A[i];}for(int i = step; i < len; i++){printf("%d",A[i]);if(i!=len-1){printf(" ");}}
}*/
int main(int argc, char **argv){int count = 0, step = 0;scanf("%d %d",&count,&step);step = step % count;//过2,3数据点的关键for(int i = 0; i < count; i++){scanf("%d",&A[i + step]);}for(int i = 0; i < step; i++){A[i] = A[count+i];}for(int i = 0; i < count; i++){printf("%d",A[i]);if(i!=count-1){printf(" ");}}}
注意笔者,一开始没有添加注释中所写的关键步骤,导致2,3数据点一直不过,下同,加上即可
第二种,矩阵转置的思路,(B,A)=(A^-1, B^-1 )^-1
#include <bits/stdc++.h>
using namespace std;void reverse(int R[], int left, int right);
int main(int argc, char **argv){int m, n;scanf("%d %d", &n, &m);int arr[n];for(int i = 0; i < n; i++){scanf("%d",&arr[i]);}m = m % n;reverse(arr, 0, n-m-1);reverse(arr, n-m, n-1);reverse(arr, 0, n-1);for(int i = 0; i < n-1; i++){printf("%d ",arr[i]);}printf("%d",arr[n-1]);return 0;
}
void reverse(int R[], int left, int right){int i = left, j = right, temp;while(i < j){temp = R[i];R[i] = R[j];R[j] = temp;i++;j--;}
}
第三种,其他网友参考答案,与笔者的第一种方法相反,控制输入,这种方法更巧妙一些
#include <cstdio>
#include <bits/stdc++.h>using namespace std;//在输入上下手,高招
int main(int argc, char **argv){int m, n;scanf("%d %d",&n,&m);m = m % n;int a[n];for(int i = m; i <= n-1; i++){scanf("%d ",&a[i]);}for(int i = 0; i<=m-1; i++){scanf("%d",&a[i]);}for(int i = 0; i <n-1; i++)printf("%d ",a[i]);printf("%d",a[n-1]);return 0;
}
PAT1008数组元素循环右移问题(2,3测试点不过的解决办法)相关推荐
- 7-1 数组元素循环右移问题 (20 分)
7-1 数组元素循环右移问题 (20 分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1 ⋯AN−1 ...
- C++学习之路 | PTA乙级—— 1008 数组元素循环右移问题 (20分)(精简)
1008 数组元素循环右移问题 (20分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A 0 A 1 ...
- 浙江大学PAT上机题解析之1008. 数组元素循环右移问题 (20)
1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个 ...
- c++string转char数组_C++ 算法题解:打印沙漏、素数对猜想、数组元素循环右移问题...
作者:鲸90830 链接:https://www.cnblogs.com/whale90830/p/10688802.html DS_起步自测 中国大学MOOC_陈越.何钦铭_数据结构_起步能力自测 ...
- 7-2 数组元素循环右移问题 (40 分)
** 7-2 数组元素循环右移问题 (40 分) ** 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A 0 A 1 ⋯ ...
- 1008 数组元素循环右移问题(C语言)
1008 数组元素循环右移问题 (20 分) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--A ...
- PAT (Basic Level) Practice1008 数组元素循环右移问题
1008 数组元素循环右移问题 一.题目 一个数组A中存有N(>0)N(>0)N(>0)个整数,在不允许使用另外数组的前 提下,将每个整数循环向右移M(≥0)M(≥0)M(≥0)个位 ...
- PATB 1008 数组元素循环右移问题
1008 数组元素循环右移问题 (20 分) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--A ...
- java 数组元素依次右移,将数组元素循环右移k个位置(Java实现)
用四种方法实现了将数组元素循环右移k个位置,相关的解释作为注释放在代码里面了. package movearrayelement; import java.util.BitSet; public cl ...
最新文章
- 差分约束 1:pku 1201 Intervals 2:pku 1364 King 3:hdu 1534
- mysql 事务关联_MySQL 关联、联合查询,事务ACID见解
- spring aop环绕通知@Around
- linux--GCC简单用法
- postgresql user表
- [小技巧]为Atlas AutoComplete加上滚动条
- Java SE 正则表达式 API Pattern 与 Matcher.
- MapGuide Maestro 3.0发布
- javacv教程文档手册开发指南汇总篇
- Visual Studio 2015安装配置图文教程
- 电脑一点,让你的电脑一点都不卡
- Linux如何自定义屏幕分辨率,Linux手动设置屏幕分辨率的办法
- C#,字体多重阴影的绘制
- 我也DIY一个Android遥控器-全部开源
- java开发购物系统菜单_Java控制台购物系统
- 计算机二级wps知识点,计算机二级MS office和WPS office如何备考?
- PYsystem003 中职网络安全
- java阅读安卓_基于安卓Android的图书阅读与推荐系统APP的设计
- 【SHOI2001】洛谷2530 化工厂装箱员
- tensorflow微调vgg16 程序代码汇总
热门文章
- HDU 5934 2016CCPC杭州 B: Bomb(Trajan强连通)
- 安卓文件操作全解:内部文件、公共文件、私有文件、app静态文件
- zynq开发系列2:GPIO连接MIO控制LED闪烁(SDK端代码编写详解)
- jQuery中eq与get的区别(整理)
- Error:Cannot find bean: org.apache.struts.taglib.html.BEAN in any scope
- 使用vue完成一个分页效果
- Keras源码下载记录
- docker集群——介绍Mesos+Zookeeper+Marathon的Docker管理平台
- symfony3 使用命令行工具生成Entity实体所踩的坑
- kettle的hello world