國慶節複習(1)

2021-07-23 08:54:28 字數 1961 閱讀 3566

【資料儲存】

遞推:

1.每行為乙個階段

2.f(i,j)表示第i行第j列商店到起點最大和

3.狀態轉移方程:

·逆推:為f(i,j)=max

……memset(visited,0,sizeof(visited));

cout<

執行較慢
記錄路徑

g[n][n]記錄每一步的選擇

int a[n][n],f[n][n],g[n][n];

void printpath(int i,int j)

滾動陣列

儘管f有n行,但只有兩行參與了計算。所以可以吧f變成f[1][n]來節省空間。

計算的時候,讓i和i-1對2取模

f[i%2][j] = max(f[(i-1)%2][j], f[(i-1)%2][j-1]) + a[i][j];
或者可以這樣寫

#define f(i,j) f[(i)%2][j] // 注意括號

……f(i,j) = max(f(i-1,j), f(i-1,j-1)) + a[i][j];

騙分方法

①暴力搜尋

int result=0;

void search(int x,int y,int depth,int

sum)

else

} //呼叫try(1,1,1,a[1][1])

②貪心+搜尋

對於某些求最小值的問題,可以先用貪心演算法得到較優解。然後開始搜尋,搜尋時只要搜到的比最小值大就剪枝。搜尋到頂點時更新最小值。

求最大值不能用

③隨機化

從最頂層開始,讓向左走和向右走的概率相等。這個過程重複若干次,總有可能的得到正確答案。

int result=0;

srand(time(null));

for(int t=1;t<=10000;t++)

rand()/(double)rand_max;

if(p<0.5) x+=0;

else x+=1;

v+=a[i][x];

}if(v>result) result=v;

}

【問題描述】n 堆石子圍成一圈,每堆石子的量a[i]已知。每次可以將相鄰兩堆合併為一堆,將合併後石子的總量記為這次合併的得分。n-1 次合併後石子成為一堆。求這n-1 次合併的得分之和可能的最大值和最小值。(n≤100,1≤i≤n)

(1)環的處理方法

以某一點作為起點,按順時針或逆時針的順序把環上的元素複製兩遍。處理時注意起點範圍(0~n-1)和最大長度(n)。

例如上面的示例,可以變成:5 9 4 4 5 9 4 4,這樣就包含了分別以5、9、4、4 為起點的4 個環。

(2)求解

遞推思路:計算將第i堆至第j堆完全合併所能獲得的最大得分。這是此題的關鍵。

劃分階段:以合併的次數作為標準劃分階段。

確定狀態:f1(i,j)表示第i 堆至第j 堆合併所能獲得的最大價值,f2(i,j)表示第i 堆至第j 堆合併所能獲得的最小價值。

狀態轉移方程: f1(i,j)=max

f2(i,j)=min

其中1≤i≤k

國慶節 放假

終於到國慶節了.終於放假了,好慘.徒勞的辛苦了好幾個月了.本來想好好休息一下,但是明天就要去廣州姑姑家,然後呆兩天就回家.也好忙哦.煩 前段時間就一直在開發研究所的專案,周五他們過來驗收.本來按照開始的需求分析已經是完全做好了,但是他們突然就提出了好多新的要求而且都很合理.明顯是做需求的時候溝通出了...

我們的國慶節

又逢國慶,道一聲 國慶快樂 這是大四的我們在學校過得最後乙個國慶。這個國慶我們同往日一樣,繼續學習。繼續在提高班享受我們的快樂。雖然也想回家,看望親人。替家人分擔一些近憂,但七期 八期的每個人心裡都可以做出正確的判斷。國慶前,回家呆了一天。第二天上午就匆匆的趕了回來。你問我累嗎?我說不累,見到家裡一...

國慶節遊嵩山

國慶節的時候,和同學一起去鄭州爬了一趟嵩山。之前因為參加親戚婚禮,所以穿的是皮鞋。在沒有經驗的情況下,硬是沒坐纜車登了上去,又在上上走了好幾個小時,結果腳部磨的不行了 不過風景確實不錯,寫部落格記錄一下。少林寺就在少室山腳下,規模還是很大的,但是在國慶這個小長假期間只能用人山人海來形容,也沒太仔細逛...