1. 程式人生 > >華為2019屆校招筆試題

華為2019屆校招筆試題

1.輸入任意個字串,將其中的小寫字母變為大寫,大寫字母變為小寫,其他字元不用處理

輸入描述:abcd12#%XYZ

輸出描述:ABCD12#%xyz

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String  string = in.nextLine();
		char[] ch = string.toCharArray();
		for(int i = 0; i < string.length(); i++) {
			if(ch[i] >= 'a' && ch[i] <= 'z') {
				ch[i] = (char)(ch[i]-'a'+'A');
			}
			if(ch[i] >= 'A' && ch[i] <= 'Z') {
				ch[i] = (char)(ch[i]-'A'+'a');
			}
		}
		System.out.println(new String(ch));
	}
}
asdj33&&%SI
asdj33&&%si

2.小偷來到了一個神祕的王宮,突然眼前一亮,發現5個寶貝,每個寶貝的價值都不一樣,且重量也不一樣,但是小偷的揹包攜帶重量有限,所以他不得不在寶貝中做出選擇,才能使偷盜的財富最大,請你幫助小偷計算一下。

輸入描述:

  • 寶貝價值:6,3,5,4,6
  • 寶貝重量:2,2,6,5,4
  • 小偷揹包容量:10

輸出描述:

  • 偷到寶貝的總價值:15

示例1:

  • 輸入:

                  6,3,5,4,6

                  2,2,6,5,4

                 10

  • 輸出:15

分析:0-1揹包問題

import java.util.Scanner;

public class Main {
	static int[] value = new int[1000];
	static int[] weight = new int[1000];
	static int[][] got = new int[1000][1000];
	static int len;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
	    String v = in.nextLine();//價值
		String w = in.nextLine();//重量
		int cop = in.nextInt();//容量
		getValues(value, v);
		getValues(weight, w);
		System.out.println(getMax(0,cop));
		
		
		
	}
	//將字串存入陣列中
	static void getValues(int[] a, String s) {
		
		String[] array = s.split(",");
		len = array.length;
		for(int i=0; i < len; i++ ) {
			a[i] = array[i].charAt(0) - '0';
			
		}
		
	}
	
	//獲取最大的價值
	static int getMax(int n, int c) {
		if(got[n][c] != 0) {
			return got[n][c];
		}
		if(n == len) {
			return 0;
		}
		if(weight[n] <= c) {
			return got[n][c] = Math.max(getMax(n+1, c),getMax(n+1, c-weight[n])+value[n]);
		}
		return got[n][c] = getMax(n+1, c);		
	}
	
	
}

可能這種更好理解一點:

package te;

import java.nio.file.spi.FileSystemProvider;

public class Main {
	static int[] value = new int[1000];
	static int[] weight = new int[1000];
	static int[][] got = new int[1000][1000];
	static int len;
	public static void main(String[] args) {
//		Scanner in = new Scanner(System.in);
	    String v = "6,3,5,4,6";//價值
//	    System.out.println(v);
	
		String w = "2,2,6,5,4";//重量
//	    System.out.println(w);
		int cop = 10;//容量
		getValues(value, v);	
		getValues(weight, w);
		
		System.out.println("獲得最大價值:"+getMax(value, weight, len, cop, got));
		
		
		
	}
	//將字串存入陣列中
	static void getValues(int[] a, String s) {	
		String[] array = s.split(",");
		 len = array.length;
		 for(int i=0; i < len; i++ ) {
				a[i] = array[i].charAt(0) - '0';
				
			}
	
		
	}
	
	//獲取最大的價值
	static int getMax(int[] v, int[] w, int n, int c,int[][] got) {//n表示物品的個數
		//採用從底到頂的方式來設定got[i][j]的值
		//首先放w[n-1]
		for(int j = 0; j <= c; j++) {
			if(j<w[n-1]) { 
				got[n-1][j]=0;
			}
			else {
				got[n-1][j]=v[n-1];
			}
		}
		
		//接下來放剩下的n-1個物品
	
		for(int i=n-2; i>=0; i--) {
			for(int j=0;j<=c;j++) {
				if(j<w[i]) {
					got[i][j]=got[i+1][j];
				}
				else {
					got[i][j]=got[i+1][j]>got[i+1][j-w[i]]+v[i]?got[i+1][j]:got[i+1][j-w[i]]+v[i];
				}
			}
		}
	
		System.out.println("陣列:");
		for(int i = 0;i < n; i++) {
			for(int j = 0;j <= c; j++) {
				System.out.printf("%-3d",got[i][j]);
				
			}
			System.out.println('\n');
		}
		return got[0][c];
					
	}
		
}

陣列:
0  0  6  6  9  9  12 12 15 15 15 

0  0  3  3  6  6  9  9  9  10 11 

0  0  0  0  6  6  6  6  6  10 11 

0  0  0  0  6  6  6  6  6  10 10 

0  0  0  0  6  6  6  6  6  6  6  

獲得最大價值:15

3.C++中的typedef好處很多,可以讓標準化自己DIY的型別,為便於理解typedef能幹啥,本題考查各種typedef後,某個自定義型別的最終形態是啥。

輸入為兩部分,共兩行:

第一行是一堆typedef定義,標準C++語句,以分號結束,這裡不用考慮struct/union這類,只需要考慮基本型別和指標。

第二行是指定某個自定義type

輸出為該自定義type的最終形態

如輸入:

typedef int INT;typedef INT** INTP;

INTP

則輸出:int**

注意,如果有指標型別,則指標表達的*和前面的型別中級間隔一個空格,和編譯器的輸出保持一致;另外,如果第一行輸入的語句是編譯不過的,或者第二行選擇的type在第一行中沒有定義,則輸出none

相關推薦

2019試題

1.輸入任意個字串,將其中的小寫字母變為大寫,大寫字母變為小寫,其他字元不用處理 輸入描述:abcd12#%XYZ 輸出描述:ABCD12#%xyz import java.util.Scanner; public class Main { public stati

位元組跳動2019試題

1.世界盃開幕式會在球場C舉行,球場C的球迷看臺可以容納M*N個球迷。在球場售票完成後,現官方想統計此次開幕式一共有多少個球隊球迷群體,最大的球隊球迷群體有多少人。 經調研發現,球迷群體在選座時有以下特性: 同球隊的球迷群體會選擇相鄰座位,不同球隊的球迷群體會選

位元組跳動2019試題

2.為了提高文章質量,每一篇文章(假設全部都是英文)都會有m民編輯進行稽核,每個編輯獨立工作,會把覺得有問題的句子通過下表記錄下來,比如[1,10],1表示病句的第一個字元,10表示病句的最後一個字元。也就是從1到10著10個字元組成的句子,是有問題的。 現在需

2018試題

校招題1 字串重排給定一個原始字串,統計字串中各字元出現的次數,並按照ASCII碼遞增的順序依次輸出。例:原始字串為eeefgghh統計字串中各字元的出現次數:        e : 3        f  : 1        g : 2        h : 2重排字串輸

Jungle的2019總結(含部分面經經)

Jungle的秋招結束了,藉助CSDN平臺,總結一下從7月底到10月底正式簽約期間的找工作之旅。首先宣告:Jungle只是個普普通通的小碩,並不是各種大佬,更比不上平均年薪百萬的知乎er,所以在這裡分享的是一個平凡小白的普普通通的求職之旅。 0.背景 大四保研,但是成績並不算拔尖,勉強搭

思特奇2019試題

描述系統對外提供的所有服務,因此介面中的成員常量和方法都必須是公開(public)型別的,確保外部使用者能訪問它們; 介面僅僅描述系統能做什麼,但不指明如何去做,所以介面中的方法都是抽象(abstract)方法; 介面不涉及和任何具體例項相關的細節,因此介面沒有構造方法,

巨人網路2019試題

巨人網路筆試,遊戲開發崗位。前面8個選擇題,主要考的是基礎,裡面有一道SQL題。後面兩道填空題,都是考的指標。兩道問答題,第一個具體是什麼,不記得了;第二個是考的Linux,列舉常用Linux命令。最後兩道程式設計題,如下: 隨機給出5張撲克牌,請程式設計實現判定這5張牌是否順子

京東2019試題-演算法工程師 選擇題知識點彙總

剛剛結束了京東的筆試,發現很多知識點都不太瞭解,所以在這篇文章做一個彙總學習。 目錄 1 哈夫曼樹 2 迴圈連結串列 3 堆 1 哈夫曼樹 給定n個權值作為n個葉子結點,構造一棵二叉樹,若該樹的帶權路徑長度達到最小,稱

試題編程技巧總結

hid sca 筆試 result div else 總結 class ash 技巧一://統計字符串s1的頻率 String s1 = in.nextLine(); //統計字符串s1的頻率 for (char c1 : s1.toCharAr

1~n的全排列--閱文集團2018試題

put ron class 校招 next() tostring return bsp 輸出格式 題目大意:給定整數n,求出1~n的全排列 示例 輸入:n=3 輸出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] 1 im

2018 CVTE 前端試題整理

簡單的 三欄布局 位置 back 左右 blue color for循環 結果 昨天晚上(7.20)做了CVTE的前端筆試,總共三十道題,28道多選題,2道編程題 。做完了之後覺得自己基礎還是不夠紮實,故在此整理出答案,讓自己能從中得到收獲,同時給日後的同學一些參考。 首先

騰訊試題之小Q的歌單

題目 小Q的歌單 熱度指數:1624 時間限制:1秒 空間限制:32768K 小Q有X首長度為A的不同的歌和Y首長度為B的不同的歌,現在小Q想用這些歌組成一個總長度正好為K的歌單,每首歌最多隻能在歌單中出現一次,在不考慮歌單內歌曲的先後順序的情況下

美團點評試題

美團點評1 1:在網路7層協議中,如果想使用UDP協議達到TCP協議的效果,可以在哪層做文章? 因為UDP要達到TCP的功能就必須實現擁塞控制的功能,而且是在路由之間實現,這個在底層明顯是做不到擁塞控制的,在應用層也是做不到的,因為應用層之間和應用程式掛鉤,一般

阿里java試題——程式碼塊中語句的執行順序

下面是阿里java校招的一道筆試題,程式碼如下: public class HelloA { //構造方法 public HelloA(){ System.out.println("Hello A!父類構造方法"); } //非靜態

貝殼19年試題

題目描述 小智和小春兩個遊戲菜鳥要進行電競搏鬥,小智有X點HP,每次攻擊會使對方丟失A點生命值,每次攻擊完後需要冷卻C秒,小春有Y點HP,每次攻擊會使對方丟失B點生命值,每次攻擊完後需要冷卻D秒,玩家HP小於等於0時便死亡,若小智最終存活,則輸出XIAOZHI,

觸寶科技2018試題

#include <iostream> #include <string> #include <vector> using namespace std; void find(vector<string>& ve,vect

360試題(C++小明買菜)

大致題意: 小明拿n元錢去買菜,一共買x種菜,但是必須要在y種菜裡買一樣最貴的,問小明拿的錢夠不夠買菜。首先輸入n,然後輸入x,y(x<=y)。最後輸入y種菜每種菜的單價。 例: 輸入: 8 3 4 2 1 4 3 輸出: Yes 大致思

小米運維部14年試題A的個人答案

15年準備實習生面試時答的題,僅供參考一、linux基礎1)linux系統中如何獲取pid為100的程序所監聽的tcp埠,請給出詳細命令?【答】方法一:1netstat -nlg | grep 1950   2[[email protected] pierre]#

2018京東試題-資料分析崗

題目大意是給出一個數字n,問a^b=c^d(1<=a、b、c、d<=n)這種式子的個數 1^2=1^1 1^1=1^2,這樣的算兩個,n<=100000. 首先分析題目,n的資料範圍肯定是不能暴力的,從其他同學的反饋也表示這題暴力只能過20% 此題的規律在

2016年騰訊試題(研發崗)

最近網際網路筆試較頻繁,也跟著師兄一起做了一些公司的筆試題,先將題記錄下來吧,答案慢慢補。希望對自己明年找工作有幫助!首先上騰訊的筆試題,騰訊是我的dream offer啊啊啊啊啊啊啊! 一、不定