花店橱窗布置
花店橱窗布置
最新推荐文章于 2021-06-19 18:48:10 发布

QiaoRuoZhuo 于 2018-06-10 11:23:46 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
#include<iostream>
#include<cstring>
using namespace std;
const int INF = -5000;
const int MAXC = 100;
const int MAXM = 100;
int V[MAXC+1][MAXM+1];
int B1[MAXC+1][MAXM+1];
int B2[MAXC+1][MAXM+1];
int B3[MAXC+1][MAXM+1];
int pre[MAXM+1];
int cur[MAXM+1];
int F1[MAXM+1];
int X[MAXC+1];
int BX[MAXC+1];
int bestValue = INF;
int C[MAXC+1][MAXM+1];
int Best_1(int n, int m);
int Best_2(int n, int m);
int Best_3(int n, int m);
void Show(int i, int j);
int Show_2(int n, int m);
void DFS(int n, int i, int j);
int MDFS(int i, int j);
void Show_3(int n, int m);
int main()
{
int n, m;
cin >> n >> m;
for (int i=1; i<=n; i++)
{
for (int j=1; j<=m; j++)
{
cin >> V[i][j];
}
}
cout << Best_1(n, m) << endl;
Show(n, m);
cout << Show_2(n, m) << endl;
cout << Best_2(n, m) << endl;
cout << Best_3(n, m) << endl;
DFS(n, n, m);
cout << bestValue << endl;
for (int i=1; i<=n; i++)
{
cout << BX[i] << " ";
}
cout << endl;
for (int i=1; i<=MAXC; i++)
{
for (int j=1; j<=MAXM; j++)
{
B2[i][j] = INF;
}
}
cout << MDFS(n, m) << endl;
Show_3(n, m);
return 0;
}
int Best_1(int n, int m)
{
for (int i=1; i<=n; i++)
{
for (int j=i; j<=m-n+i; j++)
{
int bestP = INF;
for (int k=i; k<=j; k++)
{
if (bestP < B1[i-1][k-1] + V[i][k])
bestP = B1[i-1][k-1] + V[i][k];
}
B1[i][j] = bestP;
}
}
return B1[n][m];
}
void Show(int i, int j)
{
if (i == 0 || j == 0)
return;
for (int k=j; k>=i; k--)
{
if (B1[i][j] == B1[i-1][k-1] + V[i][k])
{
Show(i-1, k-1);
cout << k << " ";
break;
}
}
}
int Show_2(int n, int m)
{
for (int i=n,j=m; i>0; i--)
{
for (int k=i; k<=j; k++)
{
if (B1[i][j] == B1[i-1][k-1] + V[i][k])
{
X[i] = k;
j = k - 1;
break;
}
}
}
int s = 0;
for (int i=1; i<=n; i++)
{
cout << X[i] << " ";
s += V[i][X[i]];
}
cout << endl;
return s;
}
int Best_2(int n, int m)
{
for (int i=1; i<=n; i++)
{
for (int j=i; j<=m-n+i; j++)
{
int bestP = INF;
for (int k=i; k<=j; k++)
{
if (bestP < pre[k-1] + V[i][k])
bestP = pre[k-1] + V[i][k];
}
cur[j] = bestP;
}
for (int j=i; j<=m-n+i; j++)
{
pre[j] = cur[j];
}
}
return pre[m];
}
int Best_3(int n, int m)
{
for (int i=1; i<=n; i++)
{
for (int j=m-n+i; j>=i; j--)
{
int bestP = INF;
for (int k=i; k<=j; k++)
{
if (bestP < F1[k-1] + V[i][k])
bestP = F1[k-1] + V[i][k];
}
F1[j] = bestP;
}
}
return F1[m];
}
void DFS(int n, int i, int j)
{
if (i==0 || j==0)
{
int s = 0;
for (int k=1; k<=n; k++)
{
s += V[k][X[k]];
}
if (bestValue < s)
{
bestValue = s;
for (int k=1; k<=n; k++)
{
BX[k] = X[k];
}
}
return;
}
for (int k=i; k<=j; k++)
{
X[i] == k;
DFS(n, i-1, k-1);
}
}
int MDFS(int i, int j)
{
if (B2[i][j] != INF)
return B2[i][j];
if (i==0 || j==0)
return 0;
int bestP = INF;
for (int k=i; k<=j; k++)
{
if (bestP < MDFS(i-1, k-1) + V[i][k])
bestP = MDFS(i-1, k-1) + V[i][k];
}
return B2[i][j] = bestP;
}
void Show_3(int n, int m)
{
int bestP, pos;
for (int i=1; i<=n; i++)
{
for (int j=i; j<=m-n+i; j++)
{
bestP = INF;
for (int k=i-1; k<j; k++)
{
if (bestP < B3[i-1][k] + V[i][j])
{
bestP = B3[i-1][k] + V[i][j];
C[i][j] = k;
}
}
B3[i][j] = bestP;
}
}
bestP = INF;
for (int j=n; j<=m; j++)
{
if (bestP < B3[n][j])
{
bestP = B3[n][j];
pos = j;
}
}
cout << bestP << endl;
for (int i=n; i>0; i--)
{
X[i] = pos;
pos = C[i][pos];
}
for (int i=1; i<=n; i++)
{
cout << X[i] << " ";
}
cout << endl;
}
相关知识
花店橱窗怎么设计?吸引人的花店橱窗要怎么布置?
【DP】花店橱窗布置
P1854 花店橱窗布置
[Tyvj 1124]花店橱窗布置
花店橱窗陈列的花卉最好是本花店的()。
花店橱窗设计,好看的花要有好看的设计!
花店中橱窗设计一角
花店橱窗题目题解
花店圣诞主题橱窗元素!圣诞卖花就靠它啦
春季花店这样布置,生意爆好!
原文链接: 花店橱窗布置 https://m.huajiangbk.com/newsview563167.html
| 上一篇: 【题解】花店橱窗 | 下一篇: 五线城市小资花店用场景布置制造节... |


