返回题解分享
讨论 / 题解分享/ 帖子详情

修剪灌木(编程题) - 题解

模拟

#include<bits/stdc++.h>
#include<vector>
using namespace std;

const int N = 1e4+9;
int mxh[N];

int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步流,让C++代码更快
	
	int n;
	cin>>n;
	vector<int> h(n);//记录每棵树的高度 
	for(int d = 1;d <= n;d++)
	{
		for(int i = 0;i < h.size();i++)
		{
			h[i] += 1;
			h[d - 1] = 0;
			mxh[i] = max(mxh[i], h[i]);
		}
	}
	
	//第一次调转方向
	for(int d = n;d >=1;d--)
	{
		for(int i = 0;i < h.size();i++)
		{
			h[i] += 1;
			h[d - 1] = 0;
			mxh[i] = max(mxh[i], h[i]);
		}
	} 
	
	//第二次调转方向
	for(int d = 1;d <= n;d++)
	{
		for(int i = 0;i < h.size();i++)
		{
			h[i] += 1;
			h[d - 1] = 0;
			mxh[i] = max(mxh[i], h[i]);
		}
	}
	
	for(int i = 0;i < h.size();i++)
	{
		cout<< mxh[i] <<endl;
	}
	
	return 0;            
}
0 回复 0 转发 0 喜欢 0 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!