笔试数组输入模板
IT笔试中算法题属于必备,为了几句输入代码浪费时间实在不应该,大家也都是从一开始就常常使用输入输出写简单的程序。
一般情况下笔试中的输入很符合常理,让你接受几个数字或其他变量。但是常常会有让你接受数组的情况。
在数组的情况中,一般会事先给你一个数字标示数组大小然后告诉你每个数是多少。在二般的情况下则直接告诉你数组内容是什么。
众所周知,Java支持动态数组,C++中又可以使用vector容器,Python本人不懂但也可以。C语言这个很尴尬,用指针也是可以变相实现动态数组的,但是本身自带的库函数相对少,用来做笔试题有些尴尬。
1、 一般情况
给你两行数,或者一行数,前几个数中有数组的大小。形如:
3 //数组大小 4 5 6 //数组内容
1.1 Java
1.1.1 Java动态数组
在Java中因为支持动态数组,所以在一般情况下,先定义一个接受数组大小的变量,而后建立动态数组。
1 package com.zdt.com; 2 3 import java.util.Arrays; 4 import java.util.Scanner; 5 6 public class main { 7 8 public static void main (String args[]){ 9 Scanner scanner=new Scanner(System.in); 10 int m=scanner.nextInt(); 11 int[] v = new int[m]; 12 for(int i =0; i<v.length;i++){ 13 v[i]=scanner.nextInt(); 14 } 15 scanner.close(); 16 } 17 }
1.2 C++
在C++中虽然支持vector容器,但是不支持动态数组的,所以我们有两种思路来解决。
1.2.1 C++动态数组实现
利用指针构建动态数组,如果有兴趣看动态数组可以看这篇博客学习下。http://blog.csdn.net/bzhxuexi/article/details/17230073
1.2.2 C++ vector实现
利用输入控制接收数组元素进入vector容器。
vector容器并不需要事先定义大小,每次新建一个vector时都会先在内存中分配一块内存,在存储元素时,使用push_back即可从最后插入元素,如果这块内存不够时会分配给它新的更大的一块儿内存,将原来的元素复制过去后继续使用。
1 #include "stdafx.h" 2 #include <iostream> 3 #include <vector> 4 using namespace std; 5 6 int _tmain(int argc, _TCHAR* argv[]) 7 { 8 int num; 9 cin >> num; 10 vector<int> nums; 11 int temp_num; 12 for (int i = 0; i < num; i++) 13 { 14 cin >> temp_num; 15 nums.push_back(temp_num); 16 } 17 return 0; 18 }
喜欢用vector实现也是因为vector也有好多函数可以用。
2、 二般情况
直接是数组的内容。
1 2 3 4 5 6 //数组内容
2.1 Java
2.1.1 Java输入控制
在二般情况下,我们不知道数组大小是多少,所以我们只能根据行来接收,一行为一个数组内容,一般为空格隔开
2.2 C++
2.2.1 C++输入控制
本方法参照的是博客:http://blog.csdn.net/ldz1943/article/details/46311059
1 #include "stdafx.h" 2 #include <iostream> 3 #include <vector> 4 using namespace std; 5 6 int _tmain(int argc, _TCHAR* argv[]) 7 { 8 int temp_num; 9 char temp_ch; 10 vector<int> nums; 11 while ((temp_ch = cin.get()) != '\n') 12 { 13 cin.putback(temp_ch); 14 cin >> temp_num; 15 nums.push_back(temp_num); 16 } 17 return 0; 18 }