📄 xiangshanhongye.cpp
字号:
/*昨天fenix124带着他的未来女朋友去逛香山,非常遗憾他们没有看见红叶,很多枫树都是绿的。
题目就是建立一种模型让你计算一下什么时候去香山比较好。模型如下:
假设每棵树的美观都对应着一个数值。绿叶比较多的时候值为正,当它完全变红的时候为0,如果红叶慢慢掉落就成为负的了。
当红叶掉完了,它的美感值就固定了。枫树的美感值变化快慢程度不同,有些2天变化一下,而其他的可能会慢些。
看枫叶最好的时候是所有枫叶尽量接近红色,就是所有美感值的绝对值之和最小。
*/
#include<iostream>
#include<vector>
using namespace std;
struct TreeInfo{
int Bi;
int Ti;
int Ci;
int Di;
};
int TreeNum = -1;
vector<TreeInfo> AllTree;
int MaxValue = 1000;
int EarlyDate = 1000;
void init()
{
TreeInfo tree;
TreeNum = 3;
tree.Bi = 5;
tree.Ti = 2;
tree.Ci = 3;
tree.Di = -100;
AllTree.push_back(tree);
memset(&tree,0,sizeof(TreeInfo));
tree.Bi = 10;
tree.Ti = 4;
tree.Ci = 5;
tree.Di = -20;
AllTree.push_back(tree);
memset(&tree,0,sizeof(TreeInfo));
tree.Bi = -5;
tree.Ti = 3;
tree.Ci = 3;
tree.Di = -9;
AllTree.push_back(tree);
memset(&tree,0,sizeof(TreeInfo));
}
int FabValue(int Num)
{
if(Num < 0)
{
Num *= (-1);
}
return Num;
}
int IsEnd()
{
int i;
for(i = 0; i < TreeNum; i++)
{
if(AllTree[i].Bi > AllTree[i].Di)
{
return 0;
}
}
return 1;
}
int GetValue(int iDate)
{
int i,value;
value = 0;
for(i = 0; i < TreeNum; i++)
{
if(AllTree[i].Bi < AllTree[i].Di)
{
AllTree[i].Bi = AllTree[i].Di;
}
value+=FabValue(AllTree[i].Bi);
}
if(value < MaxValue)
{
MaxValue = value;
EarlyDate = iDate;
}
else if(value == MaxValue)
{
if(iDate < EarlyDate)
{
EarlyDate = iDate;
}
}
return value;
}
int SelectGoodDate()
{
int iLp;
int iDate = 1;
int value = 0;
if(TreeNum < 0)
{
return 0;
}
while(!IsEnd())
{
for(iLp = 0; iLp < TreeNum; iLp++)
{
if(0 == iDate%AllTree[iLp].Ti)
{
if(AllTree[iLp].Bi != AllTree[iLp].Di)
{
AllTree[iLp].Bi -= AllTree[iLp].Ci;
}
}
}
GetValue(iDate);
iDate++;
}
return 1;
}
void main()
{
init();
if(SelectGoodDate())
{
cout<<"您在第"<<EarlyDate<<"天去香山,可以看到最美的香山,其美观值为:"<<MaxValue<<endl;
}
else
{
cout<<"Oh,my god!香山怎么没有树了呢?"<<endl;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -