笔试数组输入模板

  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 }
时间: 2024-11-10 06:37:40

笔试数组输入模板的相关文章

后缀数组Da模板+注释 以及 dc3模板

后缀数组Da模板: 1 /* 2 后缀数组倍增法Da板子 3 */ 4 #include <cstdlib> 5 #include <cstring> 6 #include <cstdio> 7 #include <algorithm> 8 using namespace std; 9 const int N = 200000+9; 10 int c[N]; 11 int rank[N], height[N]; 12 int sa[N],s[N],n; 13

C++数组类模板(堆内存)

#ifndef _HEAP_ARRAY_H_ #define _HEAP_ARRAY_H_ /* * why * 2016/9/5 15:18 * 实现了一个较完善的数组类模板,在堆空间上 */ template < typename T > class Heap_Array { private: T *m_array; int array_len; Heap_Array(int len);//构造函数 设置一个数组的长度,并且将数组元素值全清0 // Heap_Array(const Hea

PKU 2774 Long Long Message (后缀数组练习模板题)

题意:给你两个字符串,求最长公共字串的长度. by:罗穗骞模板 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; #define M 303 #define inf 0x3fffffff #define maxn 500000 #define ws ww #define rank RANK #define F

网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板

第10单元 - 单元作业:OJ编程 - 创建数组类模板 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 本单元作业练习创建模板类.单元作业会涉及冒泡排序.线性查找等算法.如果对排序.查找不熟悉,可以自行baidu或者google 依照学术诚信条款,我保证此作业是本人独立完成的. 1 编写一个数组类模板 Array,能够存储不同类型的数组元素.对数组元素进行查找.

c++数组类模板的实现

1.预备知识 (1)模板参数不仅仅可以是类型参数,还可以是数值型参数. 如: template <typename T, int N>//int N就是数值型参数, 要注意这个int类型,因为这里要注意数值型参数的限制,下面有说数值型参数的限制. void func() { T a[N];//使用模板参数来定义局部数组,模板的数值型参数来表示数组的大小. } func<double, 10>();//这样进行使用,数值型参数,也就是第二个参数要是常量,因为这是数值型模板参数的限制造

c++数组类模板(栈内存)

#ifndef _ARRAY_H_ #define _ARRAY_H_ /* * 实现一个数组类模板,在栈上 * why * 2016/9/5 */ template < typename T, int N > class Array { private: T m_array[N]; public: int length(); //获取数组长度 bool set_array(T value, int index);  //设置数组元素内容 bool get_array(T& value

编写数组删除模板

对于javascript中的一些小的知识点很零碎,所以自己根据理解编写小的方法,以至于快速应用. 此次代码的作用是删除数组中的第n个元素: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>自定义数组删除</title> 6 7 <script> 8 9 Array.prototype.remove=functio

已经排好的数组,输入一个数,按原来的规律插入数组中;

//已经排好的数组,输入一个数,按原来的规律插入数组中; #include<iostream> using namespace std; int main() { int a[100]; int i,k,t; for(i=0;i<99;++i)/*-------------------------------赋值*/ a[i]=(i+1)*2; for(i=0;i<99;++i) { cout<<a[i]<<" "; if((i+1)%1

knockoutJS学习笔记06:ko数组与模板绑定

前面已经介绍了基本的绑定和模板相关知识,接下来就看ko里的数组和模板绑定,数组和模板绑定应该是实际项目中用得比较多的,ko提供了很好的支持. 一.observaleArray 前面的监控属性都是单个对象,用的是ko.observable:有时候后台返回的是一个列表,也就是数组,这个时候就需要用监控数组了.监控数组与监控属性几乎一样,只不过它是一个数组对象,拥有数组的特点.例如:创建一个简单的监控数组: var arr = ko.observableArray(); 也可以开始就进行初始化: ar