日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

17校招真题题集(2)6-10

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 17校招真题题集(2)6-10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:本系列題目全是按照通過率降序來排列的,基本保證題目難度遞增。

?

6、

題目名稱:Fibonacci數列

來源:網易

題目描述

Fibonacci數列是這樣定義的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci數列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci數列中的數我們稱為Fibonacci數。給你一個N,你想讓其變為一個Fibonacci數,每一步你可以把當前數字X變為X-1或者X+1,現在給你一個數N求最少需要多少步可以變為Fibonacci數。

輸入描述:

輸入為一個正整數N(1 ≤ N ≤ 1,000,000)

輸出描述:

輸出一個最小的步數變為Fibonacci數"

示例1

輸入

15

輸出

2

分析:我們不斷生成斐波那契數列,生成到比輸入大了以后,比較這一個數和前一個數就好。

def ojbk(n):x=0y=1while 1:if y>n: return min(y-n, n-x)x,y=y,x+y print(ojbk(input()))

7、

題目名稱:數字反轉

來源:網易

題目描述

對于一個整數X,定義操作rev(X)為將X按數位翻轉過來,并且去除掉前導0。例如:
如果 X = 123,則rev(X) = 321;
如果 X = 100,則rev(X) = 1.
現在給出整數x和y,要求rev(rev(x) + rev(y))為多少?

輸入描述:

輸入為一行,x、y(1 ≤ x、y ≤ 1000),以空格隔開。

輸出描述:

輸出rev(rev(x) + rev(y))的值

示例1

輸入

123 100

輸出

223

分析:直接按題意寫出來函數,模擬即可。

python字符串法:

L=(input("").split(' ')) a=L[0] b=L[1] def rev(x):q=int(x[::-1])return q c=str(rev(a)+rev(b)) print(str(rev(c)))

簡化:

a = input().split() print(str(int(a[0][::-1]) + int(a[1][::-1]))[::-1].lstrip("0"))

c++實現高效逆置:

#include<iostream> using namespace std; int rev(int m) {int t=0;while(m>0){t=t*10+m%10;m=m/10;}return t; }int main() { int x,y;while(cin>>x>>y){cout<<rev(rev(x) + rev(y))<<endl;}return 0; }

?

8、

題目名稱:下廚房

來源:網易

題目描述

牛牛想嘗試一些新的料理,每個料理需要一些不同的材料,問完成所有的料理需要準備多少種不同的材料。

輸入描述:

每個輸入包含 1 個測試用例。每個測試用例的第 i 行,表示完成第 i 件料理需要哪些材料,各個材料用空格隔開,輸入只包含大寫英文字母和空格,輸入文件不超過 50 行,每一行不超過 50 個字符。

輸出描述:

輸出一行一個數字表示完成所有料理需要多少種不同的材料。

示例1

輸入

BUTTER FLOUR HONEY FLOUR EGG

輸出

4

分析:就是沒有出現過的就放到一個容器里,高效查找。

python:

ll=[]//存東西 while 1:try:l=(input().split())for i in range(len(l)):if l[i] in ll://沒有就放進去continueelse:ll.append(l[i])except:print(len(ll))break

c++ set:

#include <iostream> #include <set> #include <string> using namespace std; int main() {string str;set<string> datas;while (cin >> str) {datas.insert(str);}cout << datas.size() << endl;return 0; }

?

9、

題目名稱:n個數里出現次數大于等于n/2的數

來源:好未來

題目描述

輸入n個整數,輸出出現次數大于等于數組長度一半的數。

輸入描述:

每個測試輸入包含 n個空格分割的n個整數,n不超過100,其中有一個整數出現次數大于等于n/2。

輸出描述:

輸出出現次數大于等于n/2的數。

示例1

輸入

3 9 3 2 5 6 7 3 2 3 3 3

輸出

3

分析:你就算暴力也是可以的

l=(input().split()) for i in l://遍歷每一個數a=0for j in l://查找if i==j:a+=1if a>len(l)/2-1:print(i)break

當然,動態規劃思想會很高效,我這里放一個鏈接,第一題就是

https://blog.csdn.net/hebtu666/article/details/81390118感興趣的看一看

?

10、

題目名稱:小易喜歡的單詞

來源:網易

題目描述

小易喜歡的單詞具有以下特性:
1.單詞每個字母都是大寫字母
2.單詞沒有連續相等的字母
3.單詞沒有形如“xyxy”(這里的x,y指的都是字母,并且可以相同)這樣的子序列,子序列可能不連續。
例如:
小易不喜歡"ABBA",因為這里有兩個連續的'B'
小易不喜歡"THETXH",因為這里包含子序列"THTH"
小易不喜歡"ABACADA",因為這里包含子序列"AAAA"
小易喜歡"A","ABA"和"ABCBA"這些單詞
給你一個單詞,你要回答小易是否會喜歡這個單詞(只要不是不喜歡,就是喜歡)。

輸入描述:

輸入為一個字符串,都由大寫字母組成,長度小于100

輸出描述:

如果小易喜歡輸出"Likes",不喜歡輸出"Dislikes"

示例1

輸入

AAA

輸出

Dislikes

?

分析:題意i容易理解,操作挺麻煩的,根據題意實現功能就好。

看代碼注釋

a=input() q=0 v=0 for i in a://遍歷判斷條件if i.islower():print("Dislikes")q=1//后面就不會執行了break for j in range(len(a)-1)://遍歷判斷條件if q==1:breakelif a[j]==a[j+1]:print("Dislikes")q=1//后面就不會執行了 for z in range(len(a)-3)://遍歷判斷條件if q==1:breakfor x in range(1,len(a)):if a[z]==a[x]://找到相同的for g in range(z+1,x)://相同的之間for h in range(x+1,len(a))://之后if a[h]==a[g]://相同,也就是ABAB型print("Dislikes")v=1breakif v==1:break if q==0://執行到這里就是likeprint("Likes")

找來的c++,不是我寫的:

#include "stdio.h" #include "string.h"int FindDislike(char *s,int length); int FindForward(char *s,int x,int y,int length);int main(){char s[101];int like=1;scanf("%s",s);int len=strlen(s); //先完成有沒有連續的數for(int i=0;i<len-1;i++){if(len<2){like=1;}else if(s[i]==s[i+1]){like=0;break;}}///if(like==1 && len>1)like=FindDislike(s,len);if(like==1)printf("Likes",s);elseprintf("Dislikes");return 0; }int FindDislike(char *s,int length){int like=1;for(int i=0;i<length;i++){for(int j=1;j<length;j++){if(s[i]==s[j]) {like=FindForward(s,i,j,length);if(like==0){ return 0;}} }}return 1; }int FindForward(char *s,int x,int y,int length){if(y==length-1)return 1;for(int i=x+1;i<y;i++){for(int j=y+1;j<length;j++){if(s[i]==s[j])return 0;}}return 1; }

?

總結

以上是生活随笔為你收集整理的17校招真题题集(2)6-10的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。