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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

17校招真题题集(3)11-15

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

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

?

11、

題目名稱:買蘋果

來源:網易

題目描述

小易去附近的商店買蘋果,奸詐的商販使用了捆綁交易,只提供6個每袋和8個每袋的包裝(包裝不可拆分)。 可是小易現在只想購買恰好n個蘋果,小易想購買盡量少的袋數方便攜帶。如果不能購買恰好n個蘋果,小易將不會購買。

輸入描述:

輸入一個整數n,表示小易想購買n(1 ≤ n ≤ 100)個蘋果

輸出描述:

輸出一個整數表示最少需要購買的袋數,如果不能買恰好n個蘋果則輸出-1

示例1

輸入

20

輸出

3

分析:貪心:肯定8個一袋的越多越好,到了最后分情況判斷即可

n=int(input()) q=0 while n>24:n-=8q+=1 if n==24 or n==18 or n==20 or n==22:print(q+3) elif n==12 or n==16 or n==14:print(q+2) elif n==6 or n==8:print(q+1) else:print("-1")

另一種思路:動態規劃/背包。

可以去我動態規劃系列文章找。https://blog.csdn.net/hebtu666/article/details/81777273

?

12、

問題名稱:素數對

來源:騰訊

題目描述

給定一個正整數,編寫程序計算有多少對質數的和等于輸入的這個正整數,并輸出結果。輸入值小于1000。
如,輸入為10, 程序應該輸出結果為2。(共有兩對質數的和為10,分別為(5,5),(3,7))

輸入描述:

輸入包括一個整數n,(3 ≤ n < 1000)

輸出描述:

輸出對數

示例1

輸入

10

輸出

2

分析:這種數據范圍直接暴力即可。先找素數,然后在素數里找合是n的數對

n=int(input()) l=[2] for i in range(3,1000)://找素數q=1for j in range(2,i):if i%j==0:q=0breakif q==1:l.append(i) s,k=0,0 for i in l://找素數對for j in l:if i+j==n:s+=1//所有的if i==j://相同的k+=1 print((s+k)//2)

?

13、

問題名稱:不要二

來源:網易

題目描述

二貨小易有一個W*H的網格盒子,網格的行編號為0~H-1,網格的列編號為0~W-1。每個格子至多可以放一塊蛋糕,任意兩塊蛋糕的歐幾里得距離不能等于2。
對于兩個格子坐標(x1,y1),(x2,y2)的歐幾里得距離為:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算術平方根
小易想知道最多可以放多少塊蛋糕在網格盒子里。

輸入描述:

每組數組包含網格長寬W,H,用空格分割.(1 ≤ W、H ≤ 1000)

輸出描述:

輸出一個最多可以放的蛋糕數

示例1

輸入

3 2

輸出

4

分析:找規律:

所謂歐幾里得距離不能等于二,因為行列都為整數,所以只可能是某一列坐標相等而行坐標相差2,或者行坐標相等而列坐標相差2。

就這么擺唄

l=(input().split()) m=int(l[0]) n=int(l[1]) //橫豎一個一個分邊界情況 if m%4==0:kk=mgg=m elif m%4==1:kk=m+1gg=m-1 elif m%4==2:kk=m+2gg=m-2 elif m%4==3:kk=m+1gg=m-1 if n%4==0:a=(n/4)*(kk+gg) elif n%4==1:a=((n-1)/4)*(kk+gg)+kk/2 elif n%4==2:a=((n-2)/4)*(kk+gg)+kk elif n%4==3:a=((n-3)/4)*(kk+gg)+kk+gg/2 print(int(a))

?其實不需要找規律,遞推也可以
定義一個數組a[1000][1000],初始值都為0,從a[0][0]開始,將a[0][2]和a[2][0]置為-1,遍歷數組,不是-1的地方可以放蛋糕

#include<iostream> using namespace std; int a[1000][1000] = {0}; int main() {int w,h,res = 0;cin >> w >> h;for(int i=0;i<w;i++){for(int j=0;j<h;j++){if(a[i][j]==0){res++;if((i+2)<w) a[i+2][j] = -1;if((j+2)<h) a[i][j+2] = -1;}}}cout << res;return 0; }

?

14、

問題名稱:統計回文

來源:網易

題目描述

“回文串”是一個正讀和反讀都一樣的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜歡這種擁有對稱美的回文串,生日的時候她得到兩個禮物分別是字符串A和字符串B。現在她非常好奇有沒有辦法將字符串B插入字符串A使產生的字符串是一個回文串。你接受花花的請求,幫助她尋找有多少種插入辦法可以使新串是一個回文串。如果字符串B插入的位置不同就考慮為不一樣的辦法。
例如:
A = “aba”,B = “b”。這里有4種把B插入A的辦法:
* 在A的第一個字母之前: "baba" 不是回文?
* 在第一個字母‘a’之后: "abba" 是回文?
* 在字母‘b’之后: "abba" 是回文?
* 在第二個字母'a'之后 "abab" 不是回文?
所以滿足條件的答案為2

輸入描述:

每組輸入數據共兩行。 第一行為字符串A 第二行為字符串B 字符串長度均小于100且只包含小寫字母

輸出描述:

輸出一個數字,表示把字符串B插入字符串A之后構成一個回文串的方法數

示例1

輸入

aba b

輸出

2

?

分析:直接按題意模擬一下即可。

python

a=input() b=input() kk=0 for i in range(len(a)+1):gg=a[0:i]+b+a[i:]if gg==gg[::-1]:kk+=1 print(kk)

c++

#include<iostream> #include<string> using namespace std; bool Huiwen(string str1) //判斷回文{int length=str1.length();for(int i=0;i<length;i++){if(str1[i]!=str1[length-1])return false;length=length-1;}return true;} int main(){string str1,str2,temp;int count,len;while(cin>>str1>>str2){count = 0;temp=str1;len=str1.length()+1;for(int i=0;i<len;i++){str1=temp;str1.insert(i,str2); //在A字符串中以此插入B字符串if(Huiwen(str1)) //判斷是否是回文count=count+1; //統計回文 }cout<<count<<endl;}return 0;}

?

15、

題目名稱:構造隊列

來源:網易有道

題目描述

小明同學把1到n這n個數字按照一定的順序放入了一個隊列Q中。現在他對隊列Q執行了如下程序:

while(!Q.empty()) //隊列不空,執行循環{int x=Q.front(); //取出當前隊頭的值xQ.pop(); //彈出當前隊頭Q.push(x); //把x放入隊尾x = Q.front(); //取出這時候隊頭的值printf("%d\n",x); //輸出xQ.pop(); //彈出這時候的隊頭}

做取出隊頭的值操作的時候,并不彈出當前隊頭。
小明同學發現,這段程序恰好按順序輸出了1,2,3,...,n。現在小明想讓你構造出原始的隊列,你能做到嗎?[注:原題樣例第三行5有錯,應該為3,以下已修正]

輸入描述:

第一行一個整數T(T ≤ 100)表示數據組數,每組數據輸入一個數n(1 ≤ n ≤ 100000),輸入的所有n之和不超過200000。

輸出描述:

對于每組數據,輸出一行,表示原始的隊列。數字之間用一個空格隔開,不要在行末輸出多余的空格.

示例1

輸入

4 1 2 3 10

輸出

1 2 1 2 1 3 8 1 6 2 10 3 7 4 9 5

?

分析:逆向考慮:

c++

#include <iostream> #include <deque> using namespace std;int main() {int n, k;cin >> k;while(k > 0){deque<int> q;k--;cin >> n;for(int i = n; i > 0; i--){q.push_front(i);int t = q.back();q.pop_back();q.push_front(t);}for(int i = 0; i < q.size(); i++)cout << q[i] << " ";cout << endl;} }

python

nn=int(input()) sum=[] for i in range(0,nn):n=int(input())line = list([j+1 for j in range(n)])res=[]while n:num=line.pop()res.insert(0,num)num = res.pop()res.insert(0,num)n-=1sum.append(res) for res in sum:print(" ".join(list(map(str,res))))

?

總結

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

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