演算法競賽入門第三章競賽題目選講

2021-07-30 17:23:50 字數 1762 閱讀 1736

//程式3-5 tex中的引號

//題意:給出一段字串,將左引號變為`` 右引號變為''

//輸入:帶有引號的字串

//輸出:變化之後的字串

//思路:用flag訊號q 來判斷左右,每當表達一次引號,則變換一次q

#include

int main() else

printf("%c",c);

}return0;}

//程式3-6 wertyu

//輸入:輸入錯位之後的字串(保證輸入合法)

//輸出:輸出原先的字串

//思路:使用乙個常量陣列用於儲存順序字串表,找到錯位後的字元的位置,輸出前乙個

#include

char s="`1234567890-=qwertyuuiop\\asdfghjkl;'zxcvbnm,./";// 單單乙個\表示轉義 若表達\ 用'\\'

int main()

return0;}

//程式3-7 回文詞

#include

#include

#include

char r(char ch);

const

char* rev="a 3 hil jm o 2tuvwxy51se z 8 ";

const

char* msg= ;

int main()

printf("%s -- is %s.\n\n",s,msg[m*2+p]);

}return0;}

char r(char ch)

//例題3-4 猜數字遊戲的提示(master-mind hints)

//輸入:給定一組數,第一行為這組數包含的數字個數,第二行為這組數,往後皆為猜測陣列,全猜零結束

//輸出:輸出形如其中a為對上的數的個數,b為在兩個陣列中都出現過的數字,且沒有對上,在乙個陣列出現一次,另乙個兩次算一次

//思路:直接統計a ,統計兩陣列中1~9出現的次數,取小的那個(即兩陣列的重合部分)再減去已經對上的數字 則為某一數字對於b的貢獻

#include

#define maxn 1010

int main()

if(b[0]==0) break;//如果測試陣列為0 結束迴圈

for(int d=1; d<=9; d++)

if(c1//取兩者中的重合部分

else b+=c2;

}printf(" (%d,%d)\n",a,b-a);}}

return0;}

//例題 3-5 生成元 (digit generator,acm/icpc seoul 2005,uva1583)

//先用乙個陣列儲存生成元,角標對應的就是要求的數,而對應角標的陣列裡的數則為生成元

#include

#include

#define maxn 100005

int ans[maxn];

int main()

if(ans[y]==0||mscanf("%d",&t);

while(t--)

return0;}

//例題3-6 環狀序列

#include

#include

#define maxn 105

int less(char* s,int p,int q)

int main()

return

0;}

演算法競賽入門經典 第三章

最長回文子串 當字串的長度比較小的時候 attention 最好把陣列開在外面,如果開在main外面並且陣列太大,就會異常退出的。最長回文子串 include include include define maxn 5000 10 char buf maxn s maxn int main prin...

演算法競賽,第三章,開燈問題

開燈問題 描述 有 n 盞燈,編號為 1 n,第 1 個人把所有燈開啟,第 2 個人按下所有編號為 2 的倍數的開關 這些燈將被關掉 第 3 個人按下所有編號為 3 的倍數的開關 其中關掉的燈將被開啟,開著的燈將被關閉 依此類推。一共有 k 個人,問最後有哪些燈開著?輸入 n 和 k,輸出開著的燈編...

《演算法競賽入門經典》第三章習題3 4

題目名稱 計算器 題目描述 編寫程式,讀入一行恰好包含乙個加號 減號或乘號的表示式,輸出它的值。這個運算子保證是二元運算子,且兩個運算子均不超過100的非負整數。運算子和運算子可以緊挨著,也可以用乙個或多個空格 tab隔開。行首末尾均可以有空格。樣例輸入 1 1 樣例輸出 2 樣例輸入 2 5 樣例...