筆試數組輸入模板
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=newScanner(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 }
筆試數組輸入模板