試卷征集
加入會(huì)員
操作視頻

“搶單”是外賣騎手的日常,當(dāng)外賣平臺(tái)上一個(gè)新的訂單出現(xiàn)時(shí),騎手需要在短時(shí)間內(nèi)考慮是否搶單。平臺(tái)根據(jù)騎手的實(shí)際信息,給出是否搶單的建議,若建議搶單則給出到達(dá)各個(gè)取送點(diǎn)的順序。平臺(tái)判斷是否搶單的算法設(shè)計(jì)如下:
1)在不改變已有訂單各取送點(diǎn)順序的前提下,將新訂單按先取餐后送餐的順序分別插入原來的路線中,枚舉所有新路線。
2)計(jì)算新路線路程,并進(jìn)行判斷:每個(gè)取送點(diǎn)都有一個(gè)系統(tǒng)指定時(shí)間,若騎手到達(dá)該位置時(shí),時(shí)間晚于系統(tǒng)指定時(shí)間,則該方案無效。
3)對(duì)新路線進(jìn)行計(jì)算和判斷后,刪除此次枚舉的兩個(gè)插入位置,還原為初始狀態(tài),再繼續(xù)進(jìn)行下一次枚舉。
4)在所有有效方案中,輸出總路程最小的方案,若無有效方案,則輸出不接單的建議。如果騎手目前無訂單在派送中,則插入訂單A的方案只有1種,騎手→取餐點(diǎn)A→送餐點(diǎn)A;如果騎手訂單中已有1個(gè)送餐點(diǎn)A和1個(gè)送餐點(diǎn)B,則新訂單C有6種插入方案:
方案Ⅰ:騎手→取餐點(diǎn)C→送餐點(diǎn)C→送餐點(diǎn)A→送餐點(diǎn)B
方案Ⅱ;騎手→取餐點(diǎn)C→送餐點(diǎn)A→送餐點(diǎn)C→送餐點(diǎn)B
方案Ⅲ:騎手→取餐點(diǎn)C→送餐點(diǎn)A→送餐點(diǎn)B→送餐點(diǎn)C
方案Ⅳ:騎手→送餐點(diǎn)A→取餐點(diǎn)C→送餐點(diǎn)C→送餐點(diǎn)B
方案Ⅴ:騎手→送餐點(diǎn)A→取餐點(diǎn)C→送餐點(diǎn)B→送餐點(diǎn)C
方案Ⅵ:騎手→送餐點(diǎn)A→送餐點(diǎn)B→取餐點(diǎn)C→送餐點(diǎn)C
請回答下列問題:
(1)若騎手僅剩1份餐未送(已取餐),路線為:騎手→送餐點(diǎn)A,新的訂單出現(xiàn)后,有
3
3
(填數(shù)字)種插入方案。
(2)定義如下con(tim)函數(shù)進(jìn)行時(shí)間格式轉(zhuǎn)換,將24小時(shí)制的“時(shí):分”轉(zhuǎn)換為分,如02:30轉(zhuǎn)換為150,請?jiān)趧澗€處填上合適代碼。
菁優(yōu)網(wǎng)
(3)定義totd(riderlist,h)函數(shù),其功能為從頭指針h進(jìn)入鏈表riderlist,按節(jié)點(diǎn)先后順序計(jì)算總路程,并判斷能否在系統(tǒng)指定時(shí)間內(nèi)到達(dá)各取送點(diǎn),若到達(dá)某一取送點(diǎn)時(shí)超時(shí)返回-1。若鏈表riderlist如下,
riderlist=[[“u1001”,“119.906033”,“31.014597”,“11:30”,2],
[“s”,“119.921439”,“31.023022”,“11:55”,3],
[“t”,“119.887850”,“31.022861”,“11:40”,1],
[“s”,“119.953836”,“31.021122”,“12:10”,-1]]。
第1個(gè)元素中“u1001”為騎手編號(hào),“119.906033”和“31.014597”,表示騎手實(shí)時(shí)位置,“11:30”為實(shí)時(shí)時(shí)間,2為下一節(jié)點(diǎn)指針,第2個(gè)元素開始,第1項(xiàng)若為“t”表示此元素為取餐點(diǎn)信息,若為“s”表示此元素為送餐點(diǎn)信息.調(diào)用函數(shù)totd(riderlist,h),risderlist的值如上,h為0,則加框處語句將被執(zhí)行
4
4
次,若將此條件語句改為riderlist[pre][4]!=-1,
不影響
不影響
(選填:影響/不影響)程序執(zhí)行。
菁優(yōu)網(wǎng)
(4)實(shí)現(xiàn)是否接單判斷的Python部分程序如下,請?jiān)趧澗€處填入合適的代碼。
菁優(yōu)網(wǎng)

【考點(diǎn)】Python語言編程環(huán)境
【答案】3;4;不影響
【解答】
【點(diǎn)評(píng)】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/7/17 8:0:9組卷:1引用:1難度:0.5
相似題
  • 1.現(xiàn)有一個(gè)m*n的迷宮矩陣 maze(如圖 a),矩陣中有空格子(用1表示,可通行)和墻(用0表示,不可通行);在迷宮中通行的每一步移動(dòng)操作,你可以往上,下,左或者右方向移動(dòng)一個(gè)格子(不能進(jìn)入墻所在的格子)。
    你的目標(biāo)是找到離entry(入口)最近的出口,并規(guī)劃入口到出口的行走路徑。(出口的含義是 maze邊界上的空格子。entry格子不算出口)。如果不存在這樣的路徑,請你返回-1;如果有,則展示entry到出口的行走路徑。
    程序在正常執(zhí)行后,運(yùn)行結(jié)果如圖b所示:
    菁優(yōu)網(wǎng)
    ●尋找最近出口位置的思路與算法:
    預(yù)設(shè):0墻      1空格子      2已探索
    在廣度優(yōu)先搜索的過程中,我們在隊(duì)列中保存[cx,cy,d]三元素列表,其中(cx,cy)為當(dāng)前的行列坐標(biāo),d為當(dāng)前坐標(biāo)相對(duì)入口的距離(即需要移動(dòng)的步數(shù))。
    當(dāng)我們遍歷至(cx,cy)時(shí),我們枚舉它上下左右的相鄰坐標(biāo)(nx,ny)。此時(shí)可能有三種情況:
    ①(nx,ny)不屬于迷宮坐標(biāo)或?yàn)閴?,此時(shí)無需進(jìn)行任何操作;
    ②(nx,ny)為迷宮的出口(在迷宮邊界且不為墻),此時(shí)應(yīng)返回 nx,ny,d+1,即該出口的坐標(biāo)以及相對(duì)入口的距離作為答案。
    ③(nx,ny)為空格子且不為出口,此時(shí)應(yīng)將新坐標(biāo)設(shè)置為已探索,并將其對(duì)應(yīng)的三元素列表[nx,ny,d+1]加入隊(duì)列。
    最終,如果不存在到達(dá)出口的路徑,我們返回-1作為答案。
    1、若迷宮數(shù)據(jù)為maze=[[0,0,0,0,0],[1,1,1,1,0],[0,1,0,1,1],[0,1,1,1,0],[0,0,0,0,0]],則最少移動(dòng)步數(shù)為
     
    。
    2、請將以下的程序代碼,補(bǔ)充完整。
    菁優(yōu)網(wǎng)
    菁優(yōu)網(wǎng)

    發(fā)布:2025/1/2 10:30:2組卷:1引用:1難度:0.4
  • 2.又到植樹的季節(jié),大人和小孩共100個(gè),需要種100棵樹,每個(gè)大人每天能種3棵樹,三個(gè)小孩每天能合種1棵樹,大人小孩至少都有1位參加,問大人和小孩各有幾個(gè),正好一天完成這個(gè)任務(wù)?
    (1)大人和小孩個(gè)數(shù)最合理的范圍是
     
    。
    A.大人:5到33,小孩:1到99
    B.大人:1到33,小孩:1到291
    C.大人:1到33,小孩:3到99
    D.大人:1到33,小孩:3到291
    (2)設(shè)大人為a,小孩為b,匹配這個(gè)需求的條件是
     
    。
    A.a(chǎn)*3+b/3=100 and a+b=100
    B.a(chǎn)*3+b/3=100 or  a+b=100
    C.a(chǎn)/3+b*3=100 and a+b=100
    D.a(chǎn)/+b*3=100 or  a+b=100
    (3)算法的初始化部分已在提供的程序中完成。請?jiān)谥付▍^(qū)域內(nèi)編寫程序,完成題目要求的功能。完成VB程序的編寫,輸出符合條件的人數(shù)組合。(注意:程序編寫正確才能得分)
    Dim a As Integer,b As Integer

    發(fā)布:2025/1/2 11:30:1組卷:1引用:1難度:0.3
  • 3.查找與替換。從鍵盤上分別輸入要查找和替換的字符串,對(duì)文本文件進(jìn)行查找與替換,替換后保存到新的文本文件中。完成查找與替換功能的思路是:首先可從待檢索文本文件“in.jye.ai”逐行讀取文本內(nèi)容到列表text,然后從鍵盤上輸入查找的字符串key和替換的字符串new,對(duì)列表text中的元素逐個(gè)進(jìn)行查找并替換,結(jié)果保存到列表result,最后將result 寫入文件“out.jye.ai”。
    (1)主程序。
    text=readfile(“in.jye.ai“)#讀入文件
    key=input(“請輸入要查找的字符串:“)
    new=input(“請輸入要替換的字符串:“)
    result=[]
    for line in text:
    newline=replace(key,new,line)#替換
    result.append(newline)#添加到列表
    writefile(“out.jye.ai“,result)#寫入文件
    該程序段采用的算法是
     
    (單選,填字母:A.解析算法/B.枚舉算法)。
    (2)讀寫文本文件,如下的readfile函數(shù),逐行讀取文本文件數(shù)據(jù)存入列表并返回。請?jiān)跈M線處填入合適的代碼。
    def readfile(filename):
    f=open(filename,encoding=“utf-8“)#打開文件
    text=[]
    line=f.readline( ?。?從文件中讀取一行
    while line:
    text.jye.ai(line)#添加到列表
    line=f.readline( ?。?br />f.jye.ai( ?。?br />return    
    def writefile(filename,text):
    #將text寫入filename文件,代碼略
    (3)查找字符串,如下的findstr函數(shù),在字符串line中從begin位置開始查找key在字符串line中的位置,請?jiān)跈M線處填入合適的代碼。
    def findstr(key,line,begin):
    for i in range(begin,len(line)-len(key)+1):
    if         
    return i
    return-1
    (4)替換字符串。如下的replace函數(shù),在字符串line中檢索所有的字符串key并替換為new,請?jiān)跈M線處填入合適的代碼。
    def replace(key,new,line):
    begin=0
    while begin<len(line)-len(key)+1:
    pos=findstr(key,line,begin)
    if pos==-1:
              
    else:
    line=line[0:pos]+new+line[pos+len(key):len(line)]
    begin=pos+len(key)
    return line

    發(fā)布:2025/1/2 10:30:2組卷:0引用:2難度:0.3
小程序二維碼
把好題分享給你的好友吧~~
APP開發(fā)者:深圳市菁優(yōu)智慧教育股份有限公司| 應(yīng)用名稱:菁優(yōu)網(wǎng) | 應(yīng)用版本:5.0.7 |隱私協(xié)議|第三方SDK|用戶服務(wù)條款
本網(wǎng)部分資源來源于會(huì)員上傳,除本網(wǎng)組織的資源外,版權(quán)歸原作者所有,如有侵犯版權(quán),請立刻和本網(wǎng)聯(lián)系并提供證據(jù),本網(wǎng)將在三個(gè)工作日內(nèi)改正