基礎演算法學習之模擬

2021-10-02 06:40:57 字數 1317 閱讀 5137

模擬,入門級演算法,顧名思義,就是讓電腦按照題目所給出的方法來執行,最終輸出所需要的結果的過程。

在這個演算法中,需要注意到的有以下幾點:

關於所使用的語言的是否熟悉(最為關鍵)

關於問題的分析思路是否最簡

是否嫩在規定時間內模擬完整個過程並輸出結果

關於問題的分析方法是否易於實現(關乎比賽時能否在規定時間內打完**並調完bug)

對於特殊資料是否考慮周全

下面來看幾個例題:

本題主要關注每個小人朝向內外狀態與向左/右數的關係,乙個顯而易見的優化是當向一邊數的人數si超過整個圈總人數n時,si=si%n

廢話不多說,貼**:

玩具謎題(noip2016 d1t1)

#include

#include

#include

#include

#define inputcheck 0

#define poscheck 1

using

namespace std;

struct toya[

100001];

int n,m,pos=1;

void

move

(int t_dir,

int t_mov)if(

(a[pos]

.dir+t_dir)%2

==1) pos=pos+t_mov;

}int

main()

int dir,num;

for(

int i=

1;i<=m;i++

) cout<.name;

return0;

}

t2.神奇的幻方(noip2015 d1t1)

#include

#include

#include

#include

#include

#include

const

int n =50;

using

namespace std;

int map[n]

[n],n;

intmain()

if(prelin==n&&precol!=1)

if(precol==

1&&prelin==n)

else

else}}

for(

int i=

1;i<=n;i++

)printf

("\n");

}return0;

}

演算法學習之基礎題

基礎題之字串 題目 把手放在鍵盤上,稍不注意就會往右錯一位。q會變成w,j會變成k。輸入乙個錯位後敲出的字串,輸出打字員本來想打出的句子。分析 如何進行這樣的變換呢?一種方法是使用if語句或者switch語句,如if c w putchar q 但很明顯,這樣做太麻煩。乙個較好的方法是使用常量陣列。...

演算法學習之基礎題

基礎題之字串 題目 把手放在鍵盤上,稍不注意就會往右錯一位。q會變成w,j會變成k。輸入乙個錯位後敲出的字串,輸出打字員本來想打出的句子。分析 如何進行這樣的變換呢?一種方法是使用if語句或者switch語句,如if c w putchar q 但很明顯,這樣做太麻煩。乙個較好的方法是使用常量陣列。...

模擬退火演算法 學習反饋

模擬退火演算法是啟發式演算法的一種,啟發式演算法就是從對自然現象的直觀感覺或人類的工作經驗中啟發出來的演算法。有些實際問題根本就沒有最優解,或者最優解幾乎是不可能被求出來,這種情況使用啟發式演算法可以求得較優解,或者是與最優解差別不是很大的較優解,然後由於最優解是無法得知的,所以啟發式演算法也就無法...