不就是插花嗎?
求出動態轉移方程,很容易啊。
直接列出動態轉移方程。
**b[i][j]=max(b[i][j],b[i-1][k-1]+a[i][k]);
i=1..f;j=i..v-f+i;k=i..j;**
#include
#include
#define r(i,a,b) for(int i=a;i<=b;i++)
using
namespace
std;
int a[101][101],b[101][101],c[101],f,v,e;
void read(int &f)//裝b輸入(會快很多)
void write(int x)//裝b輸出(會快很多)
if (x) write(x/10);else
return;
putchar(x%10+48);
}int max(int x,int y)//iostream 庫里有,但是自己打會快一些
void print(int i,int j)//輸出分別插第幾個花瓶
}int main()
可能做的不好的地方較多,大佬勿噴 花店櫥窗布置
題目描述 某花店現有f束花,每一束花的品種都不一樣,同時至少有同樣數量的花瓶,被按順序擺成一行,花瓶的位置是固定的,從左到右按1到v順序編號,v是花瓶的數目。花束可以移動,並且每束花用1到f的整數標識。如果i j,則花束i必須放在花束j左邊的花瓶中。例如,假設杜鵑花的標識數為1,秋海棠的標識數為2,...
花店櫥窗布置
題面 給定乙個 n v 的矩陣 要求從第一行走到第f行,每行取走乙個數,且該行所取的數必須必上一行所取的數的列數大 求所能取走的最大值 注意每一行所取走的數字的列數必須大於等該行的行號 因為必須給前面的花留下足夠的花瓶 由此我們便可以很容易的得出狀態轉移方程 dp i j max dp i 1 k ...
花店櫥窗布置 DP
由 分析可以得知,這道題的擺放方案需要滿足 每行只選乙個數 美學值 且相鄰的兩行後一行的花瓶標號要大於前一行。那麼問題就轉換為了 在乙個數字 中,要求計算一條從頂至底的路徑,使得所經過的數字之和最大,且相鄰兩行中,後一行的列數要大於前一行。現在這道題和數塔問題很相似了,可以模擬求解。include ...