阿里机测题

2015年阿里的应届生招聘,报完需要去在线测评,只有一道在线编程,可以使用IDE。
题目
小猴子下山,沿着下山的路由一排桃树,每棵树都结了一些套子。小猴子想摘桃子,但是有一些条件需要遵守,小猴子只能沿着下山的方向走,不能回头,每棵树最多摘一个,而且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子了,那么小猴子最多能摘几个桃子呢?举例说明,比如有5课树,分别结了10,4,5,12,8颗桃子,那么小猴子最多能摘3颗桃子,来自于结了4,5,8颗桃子的树。

解题思路:
从第二个开始比较,若比第一个大,则计数,若不是则,比较下一个与第一个的大小,比较完后把这个值放入一个int 变量中。这里需要解决的问题是比较中,若第三个大于第一个,则前面的值变为第三个,后面的值继续下一个,然后继续比较,直到结束。结束后问题是需要回到起始位置,然后走下一个位置。然后从第二个开始继续比较,同理,然后比较从第一个开始一趟和从第二个开始一趟,所得数值的大小,若第二趟大于第一趟则把第二趟的存入变量中。注意这里所记得数值是从下一个开始,满足条件的,然后加上一,代表最多摘得桃子个数
c/c++

int main()
{
	int a[] = { 10, 4, 5, 12, 8 };
	int count = 0, m = 0, k = 0;
	int n = sizeof(a) / sizeof(a[0]);
	for (int i = 0; i < n; i++)
	{
		k+=1;
		for (int j=i+1; j < n; j++)
		{
			if (a[i] < a[j])
			{
				m++;
				i=j;
			}
		}
		//cout << m << endl;//测试每次比较的结果
		if (count < m)
		{
			count = m;
		}
		m = 0;
		i = k-1;	
	}
		cout << count+1<<endl;
		return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值