A.
统计1的个数即可,注意最后一个数必定是某个台阶的最后一级也就是级数即可。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
int n,i,j,k;
vector<int>c,ans;
cin>>n;
if(n==1){
cout<<1<<endl<<1<<endl;return 0;
}
int cnt=0;
for(i=1;i<=n;i++){
cin>>j;c.push_back(j);if(j==1)cnt++;
}
cout<<cnt<<endl;
for(i=0;i<c.size()-1;i++){
if(c[i+1]==1)cout<<c[i]<<' ';
}
cout<<c.back()<<endl;
return 0;
}
B.
把两个字符串反转以后统计最长的公共前缀即可,剩下的就是必须砍掉的长度
#include<cstdio>
#include<iostream>
#include<string>