励志用尽量少的代码做高效的表达。


题目描述

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。

输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

输入样例:
4
10 8 1 2

输出样例:
2 1 8 10


分析:

本题的实质是考察数组或容器的倒序运算。
解法1:STL容器中vector容器操作。 定义int型容器,逐个存入数字后,从容器顶依次输出即为倒叙。优点是时间复杂度较小:O(n),缺点是代码相对较长。

解法2:使用algorithm头文件中的reverse()函数翻转。 存入数组后,直接调用翻转函数即可。优点是代码简洁,只有10行;缺点是时间复杂度较大:O(nlogn)。

传送门1——>懒癌的福音——algorithm头文件函数全集
强烈推荐读者把两种解法都尝试一下,都是很常用的方法。


代码1:vector解法

 #include<iostream>#include<vector>#include<cstdio>using namespace std  ;int main (){int n , b ;vector<int>a1;   //vector数组cin >> n ;for ( int i = 0 ; i < n ; i ++ ){scanf ("%d",&b);           //scanf配合push输入a1.push_back(b) ; }for ( int j = n ; j > 0 ; j -- )   //倒序输出{if ( j != 1 )printf ( "%d " , a1[j-1] ) ;      else if ( j == 1 )printf ( "%d" , a1[0] ) ;         //最后一个数字没有空格}return 0 ;}

代码2:reverse()解法

#include<bits/stdc++.h>      //万能头文件
using namespace std;
int main() {int n, a[10]; cin >> n; for(int i = 0; i < n; i++) cin >> a[i];reverse(a, a+n);for(int i = 0; i < n; i++) cout << (i == 0 ? "" : " ") << a[i];return 0;
}

总结:

建立vector容器的五种操作:

vectorv1; vector保存类型为T的对象。默认构造函数v1为空。
vectorv2(v1); v2是v1的一个副本。
vectorv3(n,i); v3包含n个值为i的元素。
vectorv4(a,a+4); 利用a[MAX]数组赋值
vectorv5(v4.begin(),v4.end()) ; //利用另一个容器和函数赋值

常用函数:

1.push_back() 在数组的最后添加一个数据
2.pop_back() 去掉数组的最后一个数据
4.begin() 得到数组头的指针
5.end() 得到数组的最后一个单元+1的指针
6.front() 得到数组头的引用
7.back() 得到数组的最后一个单元的引用
10.size() 当前使用数据的大小
13.erase() 删除指针指向的数据项
14.clear() 清空当前的vector
17.empty() 判断vector是否为空
18.swap() 与另一个vector交换数据
19.insert() 插入

传送门——>懒癌的福音——algorithm头文件函数全集


择苦而安,择做而乐,虚拟现实终究比不上真实精彩之万一。

最优解法——7-3 将数组中的数逆序存放 (20 分)——10行代码AC相关推荐

  1. PTA-7-1 将数组中的数逆序存放 (20分)(C语言)

    本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开. 输出 ...

  2. PTA 【java】7-2 将数组中的数逆序存放 (20 分)

    本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开. 输出 ...

  3. C语言将数组中的值逆序存放

    C语言将数组中的值逆序存放 #include<stdio.h> #define N 5 int main(){int a[N], i, temp;printf("请输入一个数组: ...

  4. 【最优解法】1087 有多少不同的值 (20分)_17行代码AC

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 当自然数 n 依次取 1.2.3.--.N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函 ...

  5. 【最优解法】1054 求平均值 (20分)_31行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 本题的基本要求非常简单:给定 N 个实数,计算它们的平均值.但复杂的是有些输入数据可能是非法的.一个" ...

  6. 1073 多选题常见计分法 (20 分)_66行代码AC

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项, ...

  7. 将一位数组的元素值逆序存放后输出 算法:将第一个元素值与倒数第一个值交换 将第二个值与倒数第二个值交换,依此类推,直到交换到中间数组元素

    /*将一位数组的元素值逆序存放后输出 算法是:将第一个元素值与倒数第一个值交换 将第二个值与倒数第二个值交换,依此类推,直到交换到中间数组元素*/ #include<stdio.h> #d ...

  8. c语言实现数组中的数据逆序排列

    主函数里面已经定义了数组b及其中的9个数据,然后利用for循环将数组中的数据打印一遍,之后将数组的首地址和数组长度9传给函数fun,函数fun要实现的功能是将数组b中的数据前后置换顺序,即原来的1,2 ...

  9. 【最优解法】1030 完美数列 (25分)_23行代码AC

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 ...

最新文章

  1. linux文件时间属性的详解
  2. No space left on device
  3. Hadoop 2.0联邦机制
  4. File类遍历(文件夹)目录功能
  5. 检测机安装mysql_centos安装mysql的正确方法
  6. 为什么只推荐入主流版本华强北耳机?
  7. linux脚本怎怎么屏蔽段落,怎么写shell脚本才能不耍流氓?
  8. VMware虚拟桌面,后台更改用户密码后,掉域的问题
  9. 【2019-2020春学期】数据库作业18:第八章: 数据库编程(实验课大作业)
  10. hexo next主题配置
  11. 玩转微信个性化头像,一键加V/加字/加图片
  12. C#语言自定义平方根函数
  13. 大一计算机科学化学,核心导读: 王 龙(北京大学计算机科学技术系学生,江西省高考理科状元): 化学被称为理科中的文科。题目量较多,单题分较...
  14. 推荐一款3D插件可以用纯html+css打造3D效果
  15. Android 双卡双待
  16. 学python要多少钱-python编程培训需要多少钱?
  17. 使用 Coinbase 在 Polygon 网络上获取 MATIC
  18. C++ 位域(Bit Fields)
  19. 爬虫实战入门级教学(数据爬取->数据分析->数据存储)
  20. 使用 Steam++ 快速访问 Github

热门文章

  1. 极客精神|自制机械臂!被任正非表扬的华为天才少年
  2. ActiveMQ简述
  3. Linux中的基础IO(一)
  4. C++中的继承(一)
  5. 音视频技术开发周刊 | 234
  6. 腾讯开源再获OSCAR 5项大奖,全国首家可信开源治理认证自发开源企业
  7. 游戏AI探索之旅:从AlphaGo到MOBA游戏
  8. Nginx模块学习之————accesskey权限模块使用(简单的m3u8防盗链)
  9. 扩展系统功能——装饰模式
  10. spring——使用注解声明式事务整合jdbc——GRUD