求hack一道站外题
  • 板块学术版
  • 楼主Stamford_Bridge
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/12/2 20:43
  • 上次更新2023/11/5 06:51:32
查看原帖
求hack一道站外题
280667
Stamford_Bridge楼主2020/12/2 20:43

RT

题目描述 Description
***爬上多层建筑物内的楼梯。***每次爬楼梯时,都会开始从1到该楼梯的步数进行计数。 他大声说每个数字。 例如,如果她爬两个楼梯,其中第一个楼梯包含3个台阶,而第二个楼梯包含4个台阶,则他会念出1,2,3,1,2,3,4的数字。

给出了***发音的所有数字。 她爬了几段楼梯? 另外,输出每个楼梯的步数。

给定的序列将是***在攀登一个或多个楼梯时可能已经发出的有效序列。

输入描述 Input Description
输入2行
第一行输入一个正整数n (1<=n<=1000)***发音的总数
第二行包含整数a1,a2,a3,…,an (1<=ai<=1000)
表示***在爬楼梯时发音的所有数字,从第一个到最后一个发音的顺序。 每经过x步的楼梯,她将按该顺序念出数字1,2,…,x。
给定的序列将是***在爬一个或多个楼梯时可能已经发出的有效序列

输出描述 Output Description
输出2行
在第一行中,输出***爬上的楼梯数。 在第二行中,输出他所爬的每个楼梯的步数。 按正确的楼梯顺序写下数字。

样例输入 Sample Input
样例输入1:
7
1 2 3 1 2 3 4

样例输入2:
5
1 2 3 4 5
样例输出 Sample Output
样例输出1:
2
3 4 

样例输出2:
1
5 
数据范围及提示 Data Size & Hint
题意:每走一个台阶就会报数,每走新的一层就再从1开始报,给出报的顺序,求一共走了几层,每层有多少个台阶

***是人名,大家不用管他()

  我的代码:

#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[1005],cnt,cntsz[1005],xb=1,sum;
int main() {
	cin >> n;
	if (n == 0) {
		int a;
		cin >> a;
		cout << "0\n0";
		return 0;
	}
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
		if (a[i] < a[i - 1]) {
			cntsz[xb++] = cnt;
			cnt = 0;
			sum++;
		}
		cnt++;
	}
	sum++;
	cntsz[xb] = cnt;
	cout << sum << endl;
	for (int i = 1; i <= xb; i++) {
		cout << cntsz[i] << ' ';
	}
	return 0;
}
2020/12/2 20:43
加载中...