萬州網(wǎng)站建設(shè)公司做綜合醫(yī)院網(wǎng)站
鶴壁市浩天電氣有限公司
2026/01/24 15:54:38
萬州網(wǎng)站建設(shè)公司,做綜合醫(yī)院網(wǎng)站,做網(wǎng)站推廣對(duì)電腦有什么要求,臺(tái)州市城鄉(xiāng)建設(shè)規(guī)劃局網(wǎng)站最新華為OD機(jī)試
真題目錄#xff1a;點(diǎn)擊查看目錄 華為OD面試真題精選#xff1a;點(diǎn)擊立即查看
華為OD機(jī)考雙機(jī)位C卷
題目描述
一個(gè)工廠有m條流水線#xff0c;來并行完成n個(gè)獨(dú)立的作業(yè)#xff0c;該工廠設(shè)置了一個(gè)調(diào)度系統(tǒng)#xff0c;在安排作業(yè)時(shí)#xff0c;總是優(yōu)…最新華為OD機(jī)試真題目錄點(diǎn)擊查看目錄華為OD面試真題精選點(diǎn)擊立即查看華為OD機(jī)考雙機(jī)位C卷題目描述一個(gè)工廠有m條流水線來并行完成n個(gè)獨(dú)立的作業(yè)該工廠設(shè)置了一個(gè)調(diào)度系統(tǒng)在安排作業(yè)時(shí)總是優(yōu)先執(zhí)行處理時(shí)間最短的作業(yè)。現(xiàn)給定流水線個(gè)數(shù)m需要完成的作業(yè)數(shù)n, 每個(gè)作業(yè)的處理時(shí)間分別為t1,t2…tn。請(qǐng)你編程計(jì)算處理完所有作業(yè)的耗時(shí)為多少當(dāng)nm時(shí)首先處理時(shí)間短的m個(gè)作業(yè)進(jìn)入流水線其他的等待當(dāng)某個(gè)作業(yè)完成時(shí)依次從剩余作業(yè)中取處理時(shí)間最短的進(jìn)入處理。輸入描述第一行為2個(gè)整數(shù)采用空格分隔分別表示流水線個(gè)數(shù)m和作業(yè)數(shù)n第二行輸入n個(gè)整數(shù)采用空格分隔表示每個(gè)作業(yè)的處理時(shí)長(zhǎng)t1,t2…tn。0 m,n1000t1,t2…tn100。注保證輸入都是合法的。輸出描述輸出處理完所有作業(yè)的總時(shí)長(zhǎng)。示例1輸入3 5 8 4 3 2 10輸出13說明1、先安排時(shí)間為2、3、4的3個(gè)作業(yè)。2、第一條流水線先完成作業(yè)然后調(diào)度剩余時(shí)間最短的作業(yè)8。3、第二條流水線完成作業(yè)然后調(diào)度剩余時(shí)間最短的作業(yè)10。4、總工耗時(shí)就是第二條流水線完成作業(yè)的時(shí)間13310。解題思路作業(yè)分配如果作業(yè)數(shù)n小于等于流水線數(shù)m則每個(gè)作業(yè)直接分配給一條流水線處理完的總時(shí)間就是所有作業(yè)的處理時(shí)間。如果作業(yè)數(shù)n大于流水線數(shù)m則優(yōu)先將處理時(shí)間最短的m個(gè)作業(yè)分配給各條流水線。對(duì)于剩下的作業(yè)依次從處理時(shí)間最短的作業(yè)中選擇并將其分配到當(dāng)前處理時(shí)間最短的流水線上。每分配一個(gè)作業(yè)就將該流水線的總時(shí)間更新。以示例輸入為例3條流水線5個(gè)作業(yè)處理時(shí)間為 [8, 4, 3, 2, 10]排序后的作業(yè)時(shí)間[2, 3, 4, 8, 10]分配前3個(gè)作業(yè)給流水線流水線1處理時(shí)間 2流水線2處理時(shí)間 3流水線3處理時(shí)間 4作業(yè)完成情況流水線1完成時(shí)間2進(jìn)入下一個(gè)作業(yè)8更新為10。流水線2完成時(shí)間3進(jìn)入下一個(gè)作業(yè)10更新為13。最后計(jì)算所有流水線上時(shí)間的最大值輸出13。Javaimportjava.util.Arrays;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);// 輸入流水線個(gè)數(shù)m和作業(yè)數(shù)nintnum_of_pipelinesscanner.nextInt();intnum_of_jobsscanner.nextInt();// 輸入每個(gè)作業(yè)的處理時(shí)長(zhǎng)t1,t2...tnint[]job_timesnewint[num_of_jobs];for(inti0;inum_of_jobs;i){job_times[i]scanner.nextInt();}// 對(duì)作業(yè)處理時(shí)長(zhǎng)進(jìn)行排序Arrays.sort(job_times);// 創(chuàng)建一個(gè)長(zhǎng)度為流水線個(gè)數(shù)的數(shù)組用于存儲(chǔ)每條流水線的總時(shí)長(zhǎng)int[]total_timenewint[num_of_pipelines];// 如果作業(yè)數(shù)小于等于流水線個(gè)數(shù)直接將作業(yè)分配到每條流水線上if(num_of_jobsnum_of_pipelines){total_timejob_times;}else{// 將處理時(shí)長(zhǎng)最短的m個(gè)作業(yè)分配到每條流水線上total_timeArrays.copyOfRange(job_times,0,num_of_pipelines);// 處理剩余的作業(yè)for(intinum_of_pipelines;inum_of_jobs;i){intmin_timeInteger.MAX_VALUE;intindex-1;// 找到處理時(shí)長(zhǎng)最短的流水線for(intj0;jnum_of_pipelines;j){if(total_time[j]min_time){min_timetotal_time[j];indexj;}}// 將作業(yè)分配到處理時(shí)長(zhǎng)最短的流水線上total_time[index]job_times[i];}}// 找到處理時(shí)長(zhǎng)最長(zhǎng)的流水線intmax_timeInteger.MIN_VALUE;for(inti0;inum_of_pipelines;i){if(total_time[i]max_time){max_timetotal_time[i];}}// 輸出處理完所有作業(yè)的總時(shí)長(zhǎng)System.out.println(max_time);}}Pythonnum_of_pipelines,num_of_jobsmap(int,input().split())# 流水線個(gè)數(shù)作業(yè)數(shù)job_timeslist(map(int,input().split()))# 每個(gè)作業(yè)的處理時(shí)間job_times.sort()# 按處理時(shí)間從小到大排序total_time[]# 記錄每個(gè)流水線的總耗時(shí)ifnum_of_jobsnum_of_pipelines:# 如果作業(yè)數(shù)小于等于流水線個(gè)數(shù)total_timejob_times# 每個(gè)作業(yè)都分配到一個(gè)流水線else:total_timejob_times[:num_of_pipelines]# 先將處理時(shí)間最短的m個(gè)作業(yè)分配到流水線foriinrange(num_of_pipelines,num_of_jobs):# 處理剩余的作業(yè)min_timemin(total_time)# 找到當(dāng)前總耗時(shí)最小的流水線indextotal_time.index(min_time)# 找到最小耗時(shí)的流水線的索引total_time[index]job_times[i]# 將當(dāng)前作業(yè)分配到最小耗時(shí)的流水線print(max(total_time))# 輸出處理完所有作業(yè)的總耗時(shí)JavaScriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});letm,n;lettimes[];rl.on(line,(line){if(!m!n){[m,n]line.trim().split( ).map(Number);}elseif(times.lengthn){times.push(...line.trim().split( ).map(Number));}if(mntimes.lengthn){rl.close();constnum_of_pipelinesm;constnum_of_jobsn;constjob_timestimes;job_times.sort((a,b)a-b);lettotal_timenewArray(num_of_pipelines).fill(0);if(num_of_jobsnum_of_pipelines){total_timejob_times;}else{total_timejob_times.slice(0,num_of_pipelines);for(letinum_of_pipelines;inum_of_jobs;i){letmin_timeInfinity;letindex-1;for(letj0;jnum_of_pipelines;j){if(total_time[j]min_time){min_timetotal_time[j];indexj;}}total_time[index]job_times[i];}}letmax_time-Infinity;for(leti0;inum_of_pipelines;i){if(total_time[i]max_time){max_timetotal_time[i];}}console.log(max_time);}});C#includeiostream#includevector#includealgorithmusing namespace std;intmain(){intnum_of_pipelines,num_of_jobs;cinnum_of_pipelinesnum_of_jobs;vectorintjob_times(num_of_jobs);for(inti0;inum_of_jobs;i){cinjob_times[i];}sort(job_times.begin(),job_times.end());vectorinttotal_time(num_of_pipelines);if(num_of_jobsnum_of_pipelines){total_timejob_times;}else{total_time.assign(job_times.begin(),job_times.begin()num_of_pipelines);for(intinum_of_pipelines;inum_of_jobs;i){intmin_time*min_element(total_time.begin(),total_time.end());intindexdistance(total_time.begin(),find(total_time.begin(),total_time.end(),min_time));total_time[index]job_times[i];}}cout*max_element(total_time.begin(),total_time.end())endl;return0;}Gopackagemainimport(fmtmathsort)funcmain(){varnumOfPipelines,numOfJobsint// 輸入流水線個(gè)數(shù)m和作業(yè)數(shù)nfmt.Scan(numOfPipelines,numOfJobs)// 輸入每個(gè)作業(yè)的處理時(shí)長(zhǎng)t1,t2...tnjobTimes:make([]int,numOfJobs)fori:0;inumOfJobs;i{fmt.Scan(jobTimes[i])}// 對(duì)作業(yè)處理時(shí)長(zhǎng)進(jìn)行排序sort.Ints(jobTimes)// 創(chuàng)建一個(gè)長(zhǎng)度為流水線個(gè)數(shù)的數(shù)組用于存儲(chǔ)每條流水線的總時(shí)長(zhǎng)totalTime:make([]int,numOfPipelines)// 如果作業(yè)數(shù)小于等于流水線個(gè)數(shù)直接將作業(yè)分配到每條流水線上ifnumOfJobsnumOfPipelines{copy(totalTime,jobTimes)// 補(bǔ)齊剩余的流水線時(shí)間為0fori:numOfJobs;inumOfPipelines;i{totalTime[i]0}}else{// 將處理時(shí)長(zhǎng)最短的m個(gè)作業(yè)分配到每條流水線上copy(totalTime,jobTimes[:numOfPipelines])// 處理剩余的作業(yè)fori:numOfPipelines;inumOfJobs;i{minTime:math.MaxInt32 index:-1// 找到處理時(shí)長(zhǎng)最短的流水線forj:0;jnumOfPipelines;j{iftotalTime[j]minTime{minTimetotalTime[j]indexj}}// 將作業(yè)分配到處理時(shí)長(zhǎng)最短的流水線上totalTime[index]jobTimes[i]}}// 找到處理時(shí)長(zhǎng)最長(zhǎng)的流水線maxTime:math.MinInt32fori:0;inumOfPipelines;i{iftotalTime[i]maxTime{maxTimetotalTime[i]}}// 輸出處理完所有作業(yè)的總時(shí)長(zhǎng)fmt.Println(maxTime)}C語言#includestdio.h#includestdlib.hintcompare(constvoid*a,constvoid*b){return(*(int*)a-*(int*)b);}intmain(){intnum_of_pipelines,num_of_jobs;scanf(%d %d,num_of_pipelines,num_of_jobs);int*job_times(int*)malloc(num_of_jobs*sizeof(int));for(inti0;inum_of_jobs;i){scanf(%d,job_times[i]);}qsort(job_times,num_of_jobs,sizeof(int),compare);int*total_time(int*)malloc(num_of_pipelines*sizeof(int));for(inti0;inum_of_pipelines;i){total_time[i](inum_of_jobs)?job_times[i]:0;}if(num_of_jobsnum_of_pipelines){for(intinum_of_pipelines;inum_of_jobs;i){intmin_timetotal_time[0];intindex0;for(intj1;jnum_of_pipelines;j){if(total_time[j]min_time){min_timetotal_time[j];indexj;}}total_time[index]job_times[i];}}intmax_timetotal_time[0];for(inti1;inum_of_pipelines;i){if(total_time[i]max_time){max_timetotal_time[i];}}printf(%d
,max_time);free(job_times);free(total_time);return0;}完整用例用例13 5 8 4 3 2 10用例22 4 5 6 7 8用例34 6 1 2 3 4 5 6用例41 3 10 20 30用例55 5 1 2 3 4 5用例610 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20用例76 10 10 9 8 7 6 5 4 3 2 1用例87 8 1 2 3 4 5 6 7 8用例94 15 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75用例108 12 2 4 6 8 10 12 14 16 18 20 22 24文章目錄最新華為OD機(jī)試題目描述輸入描述輸出描述示例1解題思路JavaPythonJavaScriptCGoC語言完整用例用例1用例2用例3用例4用例5用例6用例7用例8用例9用例10