2020 12 18日 去年期末真題

2021-10-12 10:23:03 字數 2944 閱讀 2907

sin(x)可以看成是數列an=(-1)n-1*x2n-1/(2n-1)!的前n項和。

遇到這種式子,我們可以觀察到

思路當n >= 2 時 :an = -an-1*x2/(2n-2)/(2n-1);

當n = 1 時 :a1 = x;

得知了第n項與第n-1項的關係,而且要求的是每一項的和,所以我們可以讓a迭代求和。

#include

intmain()

printf

("%.4lf\n"

,sum)

;return0;

}

思路

因為我們知道了an=(-1)n-1*x2n-1/(2n-1)! ,所以我們可以將數列的每一項都求出來。在知道數列的通項公式的時候可以首先想到把每一項都求出來。

#include

#include

intmain()

++n;

//因為進入while先執行n--使n減一,所以先++n;

思路(來自可愛的組員)

因為它要按字串的長度公升序輸出,所以我們可以排個序。

#include

#include

intmain()

int j;

for(i =

0;i < n -1;

++i)

}//這個迴圈結束出來,a[i]是在i後最短的字串;

puts

(a[i]);

}puts

(a[n-1]

);//因為是i==n-1的時候退出了迴圈,但是a[n-1]還未輸出

return0;

}

思路

曾經在做字串去重的時候,我們用過字串標記法,但是標記了的含義僅僅只代表了字元是否出現過;由這個為基礎而拓展,我們可以把標記的數字也賦予含義,先附上**。

我們是想要讓從短到長輸出字串,所以我們可以用乙個陣列來標記,它的下標代表長度,它的數值代表這個長度的字串出現的位置:設num[i] = x 那麼字串長度為i的字串為a[j]

思路遇到不匹配即回溯(附圖)

從主串和字串的頭開始(即i=0;j=0)

發現匹配則讓兩個都往下挪乙個

發現又匹配 再往下挪

喲,不匹配了,怎麼辦呢,咱們就換乙個頭開始重新對比

這樣,咱們就需要找到原先頭對著**,所以可以整個k做外層迴圈來做頭即下方**

}

當然,也可以不需要k,我們可以看出來

之前的頭為i-j+1;所以發生不匹配可以讓i = i - j +2; j = 0;

這樣二層迴圈可以寫成一層迴圈判斷出迴圈條件為i+len2<=len1即可

思路這個的思路是優化了一下上方暴力演算法,上方暴力演算法是發生不匹配的時候 讓i回溯(就是讓i回到原先的值),而kmp演算法可以讓i不回到原先的值,這個演算法過幾天我會寫個演算法分析,這個你們可以先看看(有點兒不好理解)

#include

#include

#include

void

get_next

(char s,

int next)

else

}else}}

intkmp

(char s1,

char s2)

else}if

(j ==-1

|| s1[i]

== s2[j]

)else

}free

(next)

;return count;

}int

main()

其實這類字串匹配的有好多種演算法,kmp只是其中不好用還慢的一種,但它是我們以後要學的演算法,我想有時間再寫個sunday演算法(好用還快 )

02 馬走日MOOC程式設計演算法基礎期末第二題

問題描述 馬在中國象棋以日字形規則移動。請編寫一段程式,給定n m大小的棋盤,以及馬的初始位置 x,y 要求不能重複經過棋盤上的同乙個點,計算馬可以有多少途徑遍歷棋盤上的所有點。輸入第一行為整數t t 10 表示測試資料組數。每一組測試資料報含一行,為四個整數,分別為棋盤的大小以及初始位置座標n,m...

15年3月CCF真題3 節日

問題描述 輸入格式 輸入包含恰好一行,有五個整數a,b,c,y1,y2。其中c 1,2,6,7分別表示星期 一 二 六 日。輸出格式 對於y1和y2之間的每乙個年份,包括y1和y2,按照年份從小到大的順序輸出一行。如果該年的a月第b個星期c確實存在,則以 yyyy mm dd 的格式輸出,即輸出四位...

2023年7月日語二級真題及答案

備 貯蔵 僱 著者 骨折 蒸気 勢 戀 険 欠伸 yawn 忍 stealthily 秘密 secretly,in secret 彼 日程 詰 his schedule is jam packed.1 全部 寶石 盜 all my jewels were stolen.魚 骨 食 this fish...