浴谷刷题答案(四)——数组

P1046 陶陶摘苹果

题目描述

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知 10 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

代码

#include <iostream>
int main()
{
    using namespace std;
    int a[10];
    for (int i = 0; i < 10; i++)
        cin >> a[i];
    int hight;
    cin >> hight;
    int count = 0;
    for (int j = 0; j < 10; j++)
        if (a[j] <= (hight + 30))
            count++;
    cout << count << endl;
    return 0;
}

P1047 校门外的树

题目描述

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是11米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,…,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

代码

#include <iostream>
int main()
{
    using namespace std;
    int length;
    cin >> length;
    int a[10000];
    for (int i = 0; i <= length; i++)
        a[i] = 1;
    int num;
    cin >> num;
    for (int j =0; j < num; j++)
    {
        int c, b;
        cin >> c >> b;
        for (int k = c; k <= b; k++)
            a[k] = 0;
    }
    int sum = 0;
    for (int l = 0; l <= length; l++)
        sum += a[l];
    cout << sum << endl;
}

P1427 小鱼的数字游戏

题目描述

小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过232-1),记住了然后反着念出来(表示结束的数字0就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

代码

#include <iostream>
int main()
{
	using namespace std;
	int a[100];
	int i = -1;
	do {
		i++;
		cin >> a[i];
	} while (a[i] != 0);
	for (i--; i >=0; i--)
		cout << a[i] << " ";
	return 0;
}

P1428 小鱼比可爱

题目描述

人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。

代码

#include <iostream>
int main()
{
	using namespace std;
	int a[100];
	int n;
	cin >> n;
	for (int i = 0; i < n; ++i)
		cin >> a[i];
	int b[100];
	for (int m = 0; m < n; m++)
		b[m] = 0;
	for (int j = 0; j < n; j++)
	{
		for (int k = 0; k <j; k++)
			if (a[k] < a[j])
				b[j]++;
	}
	for (int l = 0; l < n; l++)
		cout << b[l] << " ";
	return 0;
}

P2141 珠心算测验

题目描述

珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。

某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

最近老师出了一些测验题,请你帮忙求出答案。

(本题目为2014NOIP普及T1)

代码

#include <iostream>
int main()
{
	using namespace std;
	int n;
	cin >> n;
	int a[100];
	for (int l = 0; l < n; l++)
		cin >> a[l];
	int count = 0;
	int b[100];
	for (int i = 0; i < n; i++)
		for (int j = i + 1; j < n; j++)
			for (int k = 0; k < n; k++)
				if (a[k] == a[i] + a[j] && b[k] != 1)
				{
					count++;
					b[k] = 1;
				}
	cout << count << endl;
	return 0;
}

P1567 统计天数

题目描述

炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。

经历千辛万苦,他收集了连续 N(1≤N≤106 ) 的最高气温数据。

现在,他想知道最高气温一直上升的最长连续天数。

代码

#include <iostream>
int main()
{
	using namespace std;
	int num;
	cin >> num;
	int a[1000000];
	for (int i = 0; i < num; i++)
		cin >> a[i];
	int flag = 0;
	int result = 0;
	int days = 0;
	for (int j = 0; j < num - 1; j++){
		if (a[j] < a[j + 1]){
			days++;
			flag = 0;
		}
		else
			if (flag == 0){
				if (result < days)
					result = days;
				days = 0;
				flag = 1;
			}
	}
	cout << result + 1 << endl;
	return 0;
}
发布了17 篇原创文章 · 获赞 10 · 访问量 392

猜你喜欢

转载自blog.csdn.net/acslsr/article/details/104080731