题目
思路
这几题都比较简单,这题有个小技巧是在输入的时候同时处理数据。因为如果对应的台阶级数是1,那么就说明爬了一个楼梯res++即可。后面再存储1对应的下标,然后输出floor中对应1的前一个数即可。
AC代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int floor[n + 1];
vector<int> count_1;
int res = 0;
for (int i = 1; i <= n; ++i) {
cin >> floor[i];
if (floor[i] == 1) {
res++;
count_1.push_back(i);//存储表示出现1的下标
}
}
cout << res << endl;
int len = count_1.size();
for (int i = 1; i < len; ++i) {
cout << floor[count_1[i] - 1] << " ";
}
cout << floor[n];
}