国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

微網(wǎng)站左側隱藏導航菜單鄭州網(wǎng)絡營銷策劃

微網(wǎng)站左側隱藏導航菜單,鄭州網(wǎng)絡營銷策劃,seo成創(chuàng),wordpress wp_logout_url在算法中,模擬是一種通過計算機程序來模擬現(xiàn)實世界中的過程或系統(tǒng)行為的方法。它的核心思想是根據(jù)題目給定的規(guī)則和邏輯,按照步驟細致地重現(xiàn)事件的發(fā)展流程,從而獲得最終結果。 解題時如何使用模擬算法: 理解題目規(guī)則:…

在這里插入圖片描述

在算法中,模擬是一種通過計算機程序來模擬現(xiàn)實世界中的過程或系統(tǒng)行為的方法。它的核心思想是根據(jù)題目給定的規(guī)則和邏輯,按照步驟細致地重現(xiàn)事件的發(fā)展流程,從而獲得最終結果。

解題時如何使用模擬算法:

  1. 理解題目規(guī)則:仔細分析題目給出的規(guī)則和邏輯,確保理解全面。
  2. 設計模擬流程:在動手寫代碼之前,先在草紙上畫出模擬的流程圖,明確每一步的操作。
  3. 模塊化實現(xiàn):將模擬過程分解為多個模塊,分別實現(xiàn),這樣可以減少錯誤并便于調試。
  4. 處理特殊情況:注意邊界條件和特殊情況的處理,這是模擬算法中容易出錯的地方。
  5. 分塊調試:在實現(xiàn)過程中,可以先單獨測試每個模塊,確保其正確性。

以下是一個簡單的模擬算法題目及其解題思路: 題目:一只長度不計的蠕蟲位于n英寸深的井的底部。它每次向上爬u英寸,但休息時會滑落d英寸。求蠕蟲爬出井口需要的最少爬行次數(shù)。

解題思路

  • 使用循環(huán)模擬蠕蟲的爬行過程。
  • 每次循環(huán)中,蠕蟲向上爬u英寸,然后滑落d英寸。
  • 當蠕蟲的總爬行高度超過井的深度時,結束循環(huán)。

代碼實現(xiàn):

#include <cstdio>
int main() {int n, u, d; // 井的深度、每次爬升高度、每次滑落高度scanf("%d %d %d", &n, &u, &d);int height = 0, steps = 0;while (height < n) {height += u;steps++;if (height >= n) break; // 如果已經(jīng)爬出井口,結束循環(huán)height -= d;}printf("%d\n", steps);return 0;
}

通過上述步驟和示例,可以看到模擬算法的核心在于“照葫蘆畫瓢”,按照題目要求逐步實現(xiàn)。

1.替換所有的問號

題目描述:

給你一個僅包含小寫英文字母和 '?' 字符的字符串 s,請你將所有的 '?' 轉換為若干小寫字母,使最終的字符串不包含任何 連續(xù)重復 的字符。

注意:你 不能 修改非 '?' 字符。

題目測試用例保證 '?' 字符 之外,不存在連續(xù)重復的字符。

在完成所有轉換(可能無需轉換)后返回最終的字符串。如果有多個解決方案,請返回其中任何一個??梢宰C明,在給定的約束條件下,答案總是存在的。

示例 1:

輸入:s = "?zs"
輸出:"azs"
解釋:該示例共有 25 種解決方案,從 "azs" 到 "yzs" 都是符合題目要求的。只有 "z" 是無效的修改,因為字符串 "zzs" 中有連續(xù)重復的兩個 'z' 。

示例 2:

輸入:s = "ubv?w"
輸出:"ubvaw"
解釋:該示例共有 24 種解決方案,只有替換成 "v" 和 "w" 不符合題目要求。因為 "ubvvw" 和 "ubvww" 都包含連續(xù)重復的字符。

提示:

  • 1 <= s.length <= 100
  • s 僅包含小寫英文字母和 '?' 字符

算法思路:

  • 從前往后遍歷整個字符串,找問號。
  • 找到問號之后,就用 a ~ z 的每?個字符去嘗試替換。
  • 最終的字符串不包含任何連續(xù)重復的字符,說明替換的字符與它自身前或后的位置的字符都不重復。

代碼實現(xiàn):

class Solution 
{
public:string modifyString(string s) {int n=s.size();for(int i=0;i<n;i++){if(s[i]=='?')//替換{for(char ch='a';ch<='z';ch++){if((i==0||ch!=s[i-1])&&(i==n-1||ch!=s[i+1])){s[i]=ch;break;}}}}return s;}
};

2.提莫攻擊

題目描述:

在《英雄聯(lián)盟》的世界中,有一個叫 “提莫” 的英雄。他的攻擊可以讓敵方英雄艾希(編者注:寒冰射手)進入中毒狀態(tài)。

當提莫攻擊艾希,艾希的中毒狀態(tài)正好持續(xù) duration 秒。

正式地講,提莫在 t 發(fā)起攻擊意味著艾希在時間區(qū)間 [t, t + duration - 1](含 tt + duration - 1)處于中毒狀態(tài)。如果提莫在中毒影響結束 再次攻擊,中毒狀態(tài)計時器將會 重置 ,在新的攻擊之后,中毒影響將會在 duration 秒后結束。

給你一個 非遞減 的整數(shù)數(shù)組 timeSeries ,其中 timeSeries[i] 表示提莫在 timeSeries[i] 秒時對艾希發(fā)起攻擊,以及一個表示中毒持續(xù)時間的整數(shù) duration 。

返回艾希處于中毒狀態(tài)的 秒數(shù)。

示例 1:

輸入:timeSeries = [1,4], duration = 2
輸出:4
解釋:提莫攻擊對艾希的影響如下:
- 第 1 秒,提莫攻擊艾希并使其立即中毒。中毒狀態(tài)會維持 2 秒,即第 1 秒和第 2 秒。
- 第 4 秒,提莫再次攻擊艾希,艾希中毒狀態(tài)又持續(xù) 2 秒,即第 4 秒和第 5 秒。
艾希在第 1、2、4、5 秒處于中毒狀態(tài),所以總中毒秒數(shù)是 4 。

示例 2:

輸入:timeSeries = [1,2], duration = 2
輸出:3
解釋:提莫攻擊對艾希的影響如下:
- 第 1 秒,提莫攻擊艾希并使其立即中毒。中毒狀態(tài)會維持 2 秒,即第 1 秒和第 2 秒。
- 第 2 秒,提莫再次攻擊艾希,并重置中毒計時器,艾希中毒狀態(tài)需要持續(xù) 2 秒,即第 2 秒和第 3 秒。
艾希在第 1、2、3 秒處于中毒狀態(tài),所以總中毒秒數(shù)是 3 。

提示:

  • 1 <= timeSeries.length <= 104
  • 0 <= timeSeries[i], duration <= 107
  • timeSeries非遞減 順序排列

算法思路:

  • 計算相鄰兩個時間點的差值:

    i. 如果差值大于等于中毒時間,說明上次中毒可以持續(xù) duration 秒;

    ii. 如果差值小于中毒時間,那么上次的中毒只能持續(xù)兩者的差值。

  • 最后的攻擊也會持續(xù)duration 秒。

代碼實現(xiàn):


class Solution 
{
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int ret=0;for(int i=1;i<timeSeries.size();i++){int x=timeSeries[i]-timeSeries[i-1];if(x>=duration)ret+=duration;elseret+=x;}return ret+duration;}
};

3.Z字形變換

題目描述:

將一個給定字符串 s 根據(jù)給定的行數(shù) numRows ,以從上往下、從左到右進行 Z 字形排列。

比如輸入字符串為 "PAYPALISHIRING" 行數(shù)為 3 時,排列如下:

P   A   H   N
A P L S I I G
Y   I   R

之后,你的輸出需要從左往右逐行讀取,產(chǎn)生出一個新的字符串,比如:"PAHNAPLSIIGYIR"。

請你實現(xiàn)這個將字符串進行指定行數(shù)變換的函數(shù):

string convert(string s, int numRows);

示例 1:

輸入:s = "PAYPALISHIRING", numRows = 3
輸出:"PAHNAPLSIIGYIR"

示例 2:

輸入:s = "PAYPALISHIRING", numRows = 4
輸出:"PINALSIGYAHRPI"
解釋:
P     I    N
A   L S  I G
Y A   H R
P     I

示例 3:

輸入:s = "A", numRows = 1
輸出:"A"

提示:

  • 1 <= s.length <= 1000
  • s 由英文字母(小寫和大寫)、',''.' 組成
  • 1 <= numRows <= 1000

算法思路:

找規(guī)律,? row 代替行數(shù),row = 4 時畫出的 N 字形如下:

0                   2row-2                  4row-41         2row-3    2row-1          4row-5  4row-32   2row-4          2row    4row-6          4row-23                   2row+1                  4row-1

不難發(fā)現(xiàn),數(shù)據(jù)是以 2row - 2 為一個周期進行規(guī)律變換的。將所有數(shù)替換成用周期來表示的變量:

第一行的數(shù)是:0, 2row - 2, 4row - 4;

第二行的數(shù)是:1, (2row - 2) - 1, (2row - 2) + 1, (4row - 4) - 1, (4row - 4) + 1;

第三行的數(shù)是:2, (2row - 2) - 2, (2row - 2) + 2, (4row - 4) - 2, (4row - 4) + 2;

第四行的數(shù)是:3, (2row - 2) + 3, (4row - 4) + 3。

可以觀察到,第一行、第四行為差為 2row - 2 的等差數(shù)列;第二行、第三行除了第一個數(shù)取值為行數(shù),每組下標為(2n - 1, 2n)的數(shù)圍繞(2row - 2)的倍數(shù)左右取值。

以此規(guī)律,我們可以寫出迭代算法。

代碼實現(xiàn):


class Solution 
{
public:string convert(string s, int numRows) {//處理邊界情況if(numRows==1) return s;string ret;int d=2*numRows-2,n=s.size();//1.先處理第一行for(int i=0;i<n;i+=d)ret+=s[i];//2.處理中間行for(int k=1;k<numRows-1;k++)//枚舉每一行{for(int i=k,j=d-k;i<n||j<n;i+=d,j+=d){if(i<n) ret+=s[i];if(j<n) ret+=s[j];}}//3.處理最后一行for(int i=numRows-1;i<n;i+=d)ret+=s[i];return ret;}
};

4.外觀數(shù)列

題目描述:

「外觀數(shù)列」是一個數(shù)位字符串序列,由遞歸公式定義:

  • countAndSay(1) = "1"
  • countAndSay(n)countAndSay(n-1) 的行程長度編碼。

行程長度編碼(RLE)是一種字符串壓縮方法,其工作原理是通過將連續(xù)相同字符(重復兩次或更多次)替換為字符重復次數(shù)(運行長度)和字符的串聯(lián)。例如,要壓縮字符串 "3322251" ,我們將 "33""23" 替換,將 "222""32" 替換,將 "5""15" 替換并將 "1""11" 替換。因此壓縮后字符串變?yōu)?"23321511"。

給定一個整數(shù) n ,返回 外觀數(shù)列 的第 n 個元素。

示例 1:

**輸入:**n = 4

輸出:“1211”

解釋:

countAndSay(1) = “1”

countAndSay(2) = “1” 的行程長度編碼 = “11”

countAndSay(3) = “11” 的行程長度編碼 = “21”

countAndSay(4) = “21” 的行程長度編碼 = “1211”

示例 2:

**輸入:**n = 1

輸出:“1”

解釋:

這是基本情況。

提示:

  • 1 <= n <= 30

算法思路:

所謂外觀數(shù)列,其實只是依次統(tǒng)計字符串中連續(xù)且相同的字符的個數(shù)。依照題意,依次模擬即可。

代碼實現(xiàn):


class Solution 
{
public:string countAndSay(int n) {string ret="1";for(int i=1;i<n;i++)//解釋n-1次ret即可。{string tmp;int len=ret.size();for(int left=0,right=0;right<len;){while(right<len&&ret[left]==ret[right])// 找到連續(xù)相同的字符區(qū)間right++;tmp+=to_string(right-left)+ret[left];// 將字符的數(shù)量和字符本身拼接到 tmp 中left=right;// 更新 left 指針到下一個新的字符位置}ret=tmp;// 將生成的新序列賦值給 ret,用于下一次迭代}return ret; // 返回最終生成的序列}
};

5.數(shù)青蛙

題目描述:

給你一個字符串 croakOfFrogs,它表示不同青蛙發(fā)出的蛙鳴聲(字符串 "croak" )的組合。由于同一時間可以有多只青蛙呱呱作響,所以 croakOfFrogs 中會混合多個 “croak” 。

請你返回模擬字符串中所有蛙鳴所需不同青蛙的最少數(shù)目。

要想發(fā)出蛙鳴 “croak”,青蛙必須 依序 輸出 ‘c’, ’r’, ’o’, ’a’, ’k’ 這 5 個字母。如果沒有輸出全部五個字母,那么它就不會發(fā)出聲音。如果字符串 croakOfFrogs 不是由若干有效的 “croak” 字符混合而成,請返回 -1 。

示例 1:

輸入:croakOfFrogs = "croakcroak"
輸出:1 
解釋:一只青蛙 “呱呱” 兩次

示例 2:

輸入:croakOfFrogs = "crcoakroak"
輸出:2 
解釋:最少需要兩只青蛙,“呱呱” 聲用黑體標注
第一只青蛙 "crcoakroak"
第二只青蛙 "crcoakroak"

示例 3:

輸入:croakOfFrogs = "croakcrook"
輸出:-1
解釋:給出的字符串不是 "croak" 的有效組合。

提示:

  • 1 <= croakOfFrogs.length <= 105
  • 字符串中的字符只有 'c', 'r', 'o', 'a' 或者 'k'

算法思路:

模擬青蛙的叫聲。

  • 當遇到 ‘r’ ‘o’ ‘a(chǎn)’ ‘k’ 這四個字符的時候,我們要去看看每?個字符對應的前驅字符,有沒有青蛙叫出來。如果有青蛙叫出來,那就讓這個青蛙接下來喊出來這個字符;如果沒有,直接返回 -1 ;

  • 當遇到 ‘c’ 這個字符的時候,我們?nèi)タ纯?‘k’ 這個字符有沒有青蛙叫出來。如果有,就讓這個青蛙繼續(xù)去喊 ‘c’ 這個字符;如果沒有的話,就重新搞一個青蛙。

代碼實現(xiàn):


class Solution 
{
public:int minNumberOfFrogs(string croakOfFrogs) {string t="croak";int  n=t.size();vector<int> hash(n);//用數(shù)組來模擬哈希表unordered_map<char,int> index;//[x,x這個字符對應的下標]for(int i=0;i<n;i++)index[t[i]]=i;for(auto ch:croakOfFrogs){if(ch=='c'){if(hash[n-1]!=0) hash[n-1]--;hash[index[ch]]++;}else{int i=index[ch];if(hash[i-1]==0) return -1;hash[i-1]--;hash[i]++;}}for(int i=0;i<n-1;i++)if(hash[i]!=0)return -1;return hash[n-1];}
};

最后,筆者要說的是模擬算法雖然在某些情況下可能顯得繁瑣,但它具有極高的通用性和直觀性,能夠解決許多難以直接用數(shù)學公式或復雜數(shù)據(jù)結構求解的問題。通過上述問題的分析和實現(xiàn),我們可以看到模擬算法的核心在于理解題目規(guī)則、設計清晰的模擬流程、處理特殊情況。在實際應用中,模擬算法不僅可以幫助我們快速實現(xiàn)解決方案,還能在復雜問題中找到規(guī)律,為進一步優(yōu)化提供思路。

總之,模擬算法是算法設計中的重要工具,掌握它能夠幫助我們更好地應對各種復雜問題。
在這里插入圖片描述

http://m.aloenet.com.cn/news/37559.html

相關文章:

  • 湖北潛江資訊網(wǎng)紹興seo計費管理
  • 一流的網(wǎng)站建設哪家好最近的新聞大事
  • 麗水連都區(qū)建設局網(wǎng)站網(wǎng)絡推廣運營推廣
  • 手機網(wǎng)站微信登陸推廣是什么意思
  • 東莞響應式網(wǎng)站建設抖音排名優(yōu)化
  • 做網(wǎng)站編輯我能力得到提升cps推廣接單平臺
  • 免費推廣做產(chǎn)品的網(wǎng)站廣州新聞24小時爆料熱線
  • 福建咨詢網(wǎng)站建設商家站長之家端口掃描
  • 什么是網(wǎng)絡營銷行為分析滎陽seo推廣
  • 電腦如何創(chuàng)建網(wǎng)頁優(yōu)化落實疫情防控新十條
  • 網(wǎng)站管理建設的總結中層管理者培訓課程有哪些
  • 廣州市網(wǎng)站開發(fā)搜索引擎有哪些分類
  • 企業(yè)網(wǎng)站實驗報告網(wǎng)站優(yōu)化排名易下拉軟件
  • 企業(yè)官方網(wǎng)站認證友情鏈接有哪些作用
  • 湖北網(wǎng)站設計制作開發(fā)廈門網(wǎng)站到首頁排名
  • 網(wǎng)站注冊時間網(wǎng)站點擊量 哪里查詢
  • 深圳網(wǎng)站seo 樂云踐新常用的網(wǎng)絡營銷工具
  • 靜態(tài)網(wǎng)站如何做自適應移動端aso優(yōu)化工具
  • it外包人員有多慘涇縣網(wǎng)站seo優(yōu)化排名
  • 高質量的合肥網(wǎng)站建設百度高級搜索頁面
  • 局域網(wǎng)內(nèi)做網(wǎng)站優(yōu)化seo廠家
  • 濰坊制作網(wǎng)站的公司搜索引擎調詞軟件
  • 中企動力做網(wǎng)站怎么樣國家高新技術企業(yè)查詢
  • 高唐建筑公司網(wǎng)站seo關鍵詞優(yōu)化要多少錢
  • 紹興做網(wǎng)站哪家好在線營銷推廣
  • 風機網(wǎng)站怎么做南寧seo推廣服務
  • 企業(yè)門戶網(wǎng)站開發(fā)平臺的設計與實現(xiàn)櫻桃電視劇西瓜視頻在線觀看
  • django做的網(wǎng)站源碼百度網(wǎng)站怎么優(yōu)化排名
  • 網(wǎng)站建設 順德河南網(wǎng)站建設公司哪家好
  • 眉山政府網(wǎng)站建設seo網(wǎng)站推廣優(yōu)化