期末考試 複雜的整數劃分問題(演算法基礎 第10周)

2021-07-13 22:16:51 字數 2375 閱讀 3626

問題描述:

分析

依然使用動規來做,找下狀態轉移方程。

dp[num][k][b]表示將數num劃分為k個數,且每個數不小於b。

第一問,

dp[num][k][b]=dp[num-b][k-1][b]+dp[num][k][b+1];

第二問,

dp[num][k][b]=dp[num-b][k-1][b+1]+dp[num][k][b+1];

第三問,

dp[num][k][b]=dp[num-b][k-1][b]+dp[num][k][b+1];(b為奇)

dp[num][k][b]=dp[num][k][b+1];(b為偶)

邊界條件:k為1時的情況即為邊界。

這道題做的一直在超時的邊緣,呃,,,。應該繼續優化。

原始碼

#include 

#include

#include

using

namespace

std;

int dp[51][51][51];

int fun1(int inum,int ik) }}

}*//* memset(dp, 0, sizeof(dp));

for (int num=1; num<=inum; num++) }*/

for(int num=2; num<=inum; num++) }}

return dp[inum][ik][1];

}int fun2(int inum) }}

}*//* memset(dp, 0, sizeof(dp));

for (int num=1; num<=inum; num++) }*/

for(int num=2; num<=inum; num++) }}

int sum=0;

for (int k=1; k<=inum; k++)

return sum;

}int fun3(int inum) }}

}*/for (int num=1; num<=inum; num += 2)

}

for(int num=2; num<=inum; num++)

else }}

}int sum=0;

for (int k=1; k<=inum; k++)

return sum;

}int main()

}cout

<< fun1(num, k) << endl;

cout

<< fun2(num) << endl;

cout

<< fun3(num) << endl;

}return

0;}

———————————2016/6/23—————-

晚上回來又試了一下。因為是多case問題,可以先把所有的結果都計算出來,然後每輸入一種情況直接輸出相應結果。修改**如下:

#include 

#include

#include

using

namespace

std;

int dpo[51][51][51];

int dps[51][51][51];

int sums[51];

int dpt[51][51][51];

int sumt[51];

void fun1()

}for(int num=2; num<=50; num++) }}

}void fun2()

}for(int num=2; num<=50; num++) }}

memset(sums, 0, sizeof(sums));

for (int num=1; num<=50; num++)

}}void fun3()

}

for(int num=2; num<=50; num++)

else }}

}memset(sumt, 0, sizeof(sumt));

for (int num=1; num<=50; num++)

}}int main()

return

0;}

演算法期末考試複習題

xd的小夥伴們很適合哦 program 1 1 歸併排序在最差最好平均情況下的時間複雜度分別是多少?答案 nlgn nlgn 2 判斷 歸併排序的空間複雜度是o 1 判斷 答案 false 應該是 o n 3 優先佇列提取最大元素的演算法時間複雜度?用o表示 答案 o lgn 4 堆排序在最差最好平...

關於彙編的期末考試複習1

彙編期末考試備考 1.組合語言屬於機器語言。2.處理器是由運算器,控制器和暫存器組構成的 3.儲存器的乙個位元組表示8位 bit 例如 暫存器ax分為高八位ah和低八位al兩個位元組,4.mov操作指令的使用方式 1.mov 暫存器,資料 例如 mov ax,8 2.mov 暫存器,暫存器 例如 m...

複雜的整數劃分問題

description 將正整數 n 表示成一系列正整數之和,n n1 n2 nk,其中n1 n2 nk 1 k 1 正整數 n 的這種表示稱為正整數 n 的劃分。input 標準的輸入包含若干組測試資料。每組測試資料是一行輸入資料,包括兩個整數n 和 k。0 n 50,0 k n output 對...