溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

什么是核心代碼模式與ACM模式

發(fā)布時(shí)間:2021-10-15 14:36:14 來源:億速云 閱讀:160 作者:iii 欄目:web開發(fā)

本篇內(nèi)容主要講解“什么是核心代碼模式與ACM模式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“什么是核心代碼模式與ACM模式”吧!

什么是ACM輸入模式呢?就是自己構(gòu)造輸入數(shù)據(jù)格式,把要需要處理的容器填充好,OJ不會(huì)給你任何代碼,包括include哪些函數(shù)都要自己寫,最后也要自己控制返回?cái)?shù)據(jù)的格式。

而力扣上是核心代碼模式,就是把要處理的數(shù)據(jù)都已經(jīng)放入容器里,可以直接寫邏輯,例如這樣:

class Solution { public:     int minimumTotal(vector<vector<int>>& triangle) {      } };

如果大家從一開始學(xué)習(xí)算法就一直在力扣上的話,突然切到??途W(wǎng)上的ACM模式會(huì)很不適應(yīng)。

因?yàn)槲疑蠈W(xué)的時(shí)候就搞ACM,在POJ(北大的在線判題系統(tǒng))和ZOJ(浙大的在線判題系統(tǒng))上刷過6、7百道題目了,對(duì)這種ACM模式就很熟悉。

接下來我給大家講一下ACM模式應(yīng)該如何寫。

這里我拿??蜕?騰訊2020校園招聘-后臺(tái) 的面試題目來舉一個(gè)例子,本題我不講解題思路,只是拿本題為例講解ACM輸入輸出格式。

題目描述:

由于業(yè)績(jī)優(yōu)秀,公司給小Q放了 n  天的假,身為工作狂的小Q打算在在假期中工作、鍛煉或者休息。他有個(gè)奇怪的習(xí)慣:不會(huì)連續(xù)兩天工作或鍛煉。只有當(dāng)公司營(yíng)業(yè)時(shí),小Q才能去工作,只有當(dāng)健身房營(yíng)業(yè)時(shí),小Q才能去健身,小Q一天只能干一件事。給出假期中公司,健身房的營(yíng)業(yè)情況,求小Q最少需要休息幾天。

輸入描述:

第一行一個(gè)整數(shù) 表示放假天數(shù)

第二行 n 個(gè)數(shù) 每個(gè)數(shù)為0或1,第 i 個(gè)數(shù)表示公司在第 i 天是否營(yíng)業(yè)

第三行 n 個(gè)數(shù) 每個(gè)數(shù)為0或1,第 i 個(gè)數(shù)表示健身房在第 i 天是否營(yíng)業(yè)

(1為營(yíng)業(yè) 0為不營(yíng)業(yè))

輸出描述:

一個(gè)整數(shù),表示小Q休息的最少天數(shù)

示例一:

輸入:

4

1 1 0 0

0 1 1 0

輸出:

2

這道題如果要是力扣上的核心代碼模式,OJ應(yīng)該直接給出如下代碼:

class Solution { public:     int getDays(vector<int>& work, vector<int>& gym) {         // 處理邏輯     } };

以上代碼中我們直接寫核心邏輯就行了,work數(shù)組,gym數(shù)組都是填好的,直接拿來用就行,處理完之后 return 結(jié)果就完事了。

那么看看ACM模式我們要怎么寫呢。

ACM模式要求寫出來的代碼是直接可以本地運(yùn)行的,所以我們需要自己寫include哪些庫函數(shù),構(gòu)造輸入用例,構(gòu)造輸出用例。

拿本題來說,為了讓代碼可以運(yùn)行,需要include這些庫函數(shù):

#include<iostream> #include<vector> using namespace std;

然后開始寫主函數(shù),來處理輸入用例了,示例一 是一個(gè)完整的測(cè)試用例,一般我們測(cè)了一個(gè)用例還要測(cè)第二個(gè)用例,所以用:while(cin>>n)  來輸入數(shù)據(jù)。

這里輸入的n就是天數(shù),得到天數(shù)之后,就可以來構(gòu)造work數(shù)組和gym數(shù)組了。

此時(shí)就已經(jīng)完成了輸入用例構(gòu)建,然后就是處理邏輯了,最后返回結(jié)果。

完整代碼如下:

#include<iostream> #include<vector> using namespace std; int main() {     int n;     while (cin >> n) {         vector<int> gym(n);         vector<int> work(n);         for (int i = 0; i < n; i++) cin >> work[i];         for (int i = 0; i < n; i++) cin >> gym[i];         int result = 0;          // 處理邏輯           cout << result << endl;     }     return 0; }

可以看出ACM模式要比核心代碼模式多寫不少代碼,相對(duì)來說ACM模式更鍛煉代碼能力,而核心代碼模式是把側(cè)重點(diǎn)完全放在算法邏輯上。

到此,相信大家對(duì)“什么是核心代碼模式與ACM模式”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI