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...