鵝廠2016實習筆試程式題
本文兩道程式題是2016年4月騰訊的筆試題,當時只寫出第二道,第一道關係搞的暈乎乎的。正好今天有時間,大概回憶了下題目,重新實現了一遍(可能和原題有點出路)。
1、最大回文長度
題目大概意思是,輸入一個字串,返回最大子串長度,字串字元再原字串可以不聯絡
例如 cabbeaf,迴文字串有 c、a、b、e、f、bb、aba、abba,最長的就是abba,長度4,最後輸出4.
解題思路:用兩個指標,對於字串,也就是兩個下標,一個 i 從字串開頭往後走,一個 j 從字串尾往前走。程式碼如下:
/************************************************************************* > File Name: longestplalindrome.cpp > Author : BruceLv > Mail :
[email protected] > Created Time: 2016年04月14日 星期四 20時15分52秒 ************************************************************************/ #include<iostream> #include<string> using namespace std; int longestplalindrome(string s) { int n = s.length(); if(n<=1)return n; int i,j,cnt=0,t=n-1; for(i=0;i<t;i++){ for(j=t;j>i;){ if(s[i]==s[j]){ ++i; cnt++; t = --j; } else --j; } } if(i-j==1)return 2*cnt+1; if(i-j==2) return 2*cnt; } int main() { string s; while(getline(cin,s)){ int n = longestplalindrome(s); cout<<n<<endl; } return 0; }
上面程式碼好像還有問題,這裡提供牛客網友提供的動態規劃點選開啟連結實現以供學習
#include<iostream> #include <algorithm> #include <string> int dp[1000][1000]; using namespace std; //思路就是求這個原字串和它反轉字串的最長公共子序列 int longestPlalindrome(string s) { string str = s; reverse(str.begin(),str.end()); int len=s.length(); for(int i=1;i<=len;i++){ for(int j=1;j<=len;j++){ if(s[i-1]==str[j-1]){ dp[i][j]=dp[i-1][j-1]+1; } else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } return dp[len][len]; } int main() { string str; while(cin>>str){ int len = longestPlalindrome(str); cout<<len<<endl; } return 0; }
2 、蛇形矩陣
題目:輸入一個整數N表示矩陣行列數,順時針 從1 遞增,一圈一圈往裡轉,生成矩陣,最後按行輸出每個元素。。渣渣表達,直接看栗子
輸入 :4
矩陣: 1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
輸出:1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
解題思路:這題相對簡單一些,首先感覺輸入的你 n 得到蛇形圈數 n/2 。然後一圈一圈順時針往裡轉
/*************************************************************************
> File Name: snakeMatrix.cpp
> Author : BruceLV
> Mail : [email protected]
> Created Time: 2016年04月14日 星期四 23時08分59秒
************************************************************************/
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n){
int x,y,r,cnt=1;
int **a = new int*[n];
for(int i=0;i<n;i++)
a[i] = new int[n];
if(n==1)a[0][0]=cnt;
else{
for(r=0;r<n/2;r++){
x=r; //行
for(y=r;y<n-r;y++)
a[x][y]=cnt++;
y=n-r-1;
for(x=r+1;x<n-r-1;x++)
a[x][y]=cnt++;
x=n-r-1;
for(y=n-r-1;y>r;y--)
a[x][y]=cnt++;
y=r;
for(x=n-r-1;x>r;x--)
a[x][y]=cnt++;
if(n%2) //如果n是奇數,補全中間空位
a[n/2][n/2]=cnt;
}
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cout<<a[i][j]<<" ";
for(int i=0;i<n;i++)
delete[] a[i];
delete[] a;
}
return 0;
}
相關推薦
鵝廠2016實習筆試程式題
本文兩道程式題是2016年4月騰訊的筆試題,當時只寫出第二道,第一道關係搞的暈乎乎的。正好今天有時間,大概回憶了下題目,重新實現了一遍(可能和原題有點出路)。 1、最大回文長度 題目大概意
Java 常見筆試程式題——不定期更新
1.氣泡排序 package com.xue.boke; import java.util.Arrays; import java.util.Scanner; /** * 2018/12/8 * @author xqp *按從大到小將輸入的值氣泡排序: */ public class
完美世界2016實習生筆試 [程式設計題] 最長遞增子序列A(C++)
來源:https://www.nowcoder.com/test/1669710/summary 題目: 給定一個長度為N的陣列,找出一個最長的單調自增子序列(不一定連續,但是順序不能亂)例如:給定一個長度為8的陣列A{1,3,5,2,4,6,7,8},則其最長的單調遞增子
網易 2016 實習研發project師 3道 編程題
堆棧 finder rst 起點 wap ise 狀態 swap 由於 1 比較重量 給定兩顆鉆石的編號g1,g2,編號從1開始。同一時候給定關系數組vector,當中元素為一些二元組。第一個元素為一次比較中較重的鉆石的編號,第二個元素為較輕的鉆
#騰訊20週年程式設計師秀福利紅包1998,網友:羨慕,鵝廠福利就是好
騰訊即將迎來20歲生日,20年前,我們仰望星空,20年後,我們依舊好奇。自1998年成立以來,騰訊已經20週年了,騰訊也為自己底下的員工發了一波福利,不得不說大廠的福利還是很給力的,最近就看到騰訊員工在網上秀自己公司的福利,引來網友的豔羨。 如果有想學習java的程式設計師,可來我們的jav
【LeetCode刷題記】鵝廠秋招題集(1)
這算是開部落格以來的第一篇正式的文章了,獻給Leetcode和鵝廠… 自從上了研究生,一天比一天忙,苦逼啊…所以開這個系列的坑一方面提醒自己忙實驗室的專案的同時也要多做做演算法題,督促一下自己;另一方面也希望和各位多多交流,隨便就當刷題總結了_(:з」∠)_ 2
網易2016校招內推筆試程式設計題
牛牛想嘗試一些新的料理,每個料理需要一些不同的材料,問完成所有的料理需要準備多少種不同的材料。 輸入描述: 每個輸入包含 1 個測試用例。每個測試用例的第 i 行,表示完成第 i 件料理需要哪些材料,各個材料用空格隔開,輸入只包含大寫英文字母和空格,輸入檔案不超過 50
2016騰訊實習生筆試程式設計題:有趣的數字
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.ha
2018京東C++開發工程師實習線上筆試程式設計題參考題解
AC了第一題第三題(第一題被個低階錯誤浪費了一大堆時間。。。),第二題dp推錯了,一首涼涼獻給自己。 第一題 大致題意 題意是說,給你一個n(1<=n<=100000),要你找出1~n這麼多個數的最小公倍數。因為結果可能較大,對98
京東2018實習C++筆試程式設計題
#ifndef jingdongbishi_h #define jingdongbishi_h //求1~N的最小公倍數。把每個數字分解質因數,算他們每個質因數的貢獻,然後乘起來。 //根據唯一分解定理和最小公倍數定理,求每個質數相乘即可 #define maxn 1000
華為2016校招筆試程式設計題(撲克牌大小)
時間限制:10秒 空間限制:131072K 撲克牌遊戲大家應該都比較熟悉了,一副牌由54張組成,含3~A,2各4張,小王1張,大王1張。牌面從小到大用如下字元和字串表示(其中,小寫joker表示小王,大寫JOKER表示大王):) 3 4 5 6 7 8 9
面試總結:鵝廠Linux後臺開發面試筆試C++知識點參考筆記
> 文章每週持續更新,各位的「三連」是對我最大的肯定。可以微信搜尋公眾號「 後端技術學堂 」第一時間閱讀(一般比部落格早更新一到兩篇) 文章是由自己筆試面試騰訊的筆記整理而來,整理的時候又回顧了一遍,中間工作忙斷斷續續整理了半個月,才完成現在的樣子。主要是針對面試的C++後臺開發崗位,涵蓋了大部分C++相關
百度2017春招筆試真題編程題集合之尋找三角形
import math 可能 表示 tint blog 整數 angle printf 題目描述 三維空間中有N個點,每個點可能是三種顏色的其中之一,三種顏色分別是紅綠藍,分別用‘R‘, ‘G‘, ‘B‘表示。 現在要找出三個點,並組成一個三角形,使得這個三角形的面積最大。
網易2017春招筆試真題編程題集合——分餅幹
out color div nbsp -1 pre new har nco 參考:http://blog.csdn.net/wwe4023/article/details/70171648的內容 // import java.util.*; public class M
網易2017春招筆試真題編程題集合(10)——小易記單詞
bsp math 字符串 array 如果 new 是否 數據 作用 小易參與了一個記單詞的小遊戲。遊戲開始系統提供了m個不同的單詞,小易記憶一段時間之後需要在紙上寫出他記住的單詞。小易一共寫出了n個他能記住的單詞,如果小易寫出的單詞是在系統提供的,將獲得這個單詞長度的平方
網易2017春招筆試真題編程題集合(8)——奇怪的表達式求值
next ann new switch 運算 ase 自己 lin pri 常規的表達式求值,我們都會根據計算的優先級來計算。比如*/的優先級就高於+-。但是小易所生活的世界的表達式規則很簡單,從左往右依次計算即可,而且小易所在的世界沒有除法,意味著表達式中沒有/,只有(+
網易2017春招筆試真題編程題集合(7)——集合
復雜 bsp span 問題 args 一個 add port code 小易最近在數學課上學習到了集合的概念,集合有三個特征:1.確定性 2.互異性 3.無序性.小易的老師給了小易這樣一個集合:S = { p/q | w ≤ p ≤ x, y ≤ q ≤ z }需要根據給
19道小米網運維工程師筆試真題
小米 運維題目1:有一百個圖片文件,它們的地址都是http://down.xiaomi.com/img/1.pnghttp://down.xiaomi.com/img/2.png…一直到http://down.xiaomi.com/img/100.png批量下載這100個圖片文件,並找出其中大於500KB的文
筆試錯題(典型題)
href ref src interface effective tin 影響 ner 而是 關於內部類的筆記 1.為什麽使用內部類? 使用內部類最吸引人的原因是:每個內部類都能獨立地繼承一個(接口的)實現,所以無論外圍類是否已經繼承了某個(接口的
鵝廠優文 | 決策樹及ID3算法學習
存在 常用 種類 每一個 cool HR 理論 腳本 無限 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~。 作者:袁明凱|騰訊IEG測試開發工程師 決策樹的基礎概念 決策樹是一種用樹形結構來輔助行為研究、決策分析以及機器學習的方式,是機器學習中的一種基本的