⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xiangshanhongye.cpp

📁 昨天fenix124带着他的未来女朋友去逛香山
💻 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 + -