样例
blablabla
$O(n)$
blablabla
时间复杂度
参考文献
C++ 代码
#include<iostream>
using namespace std;
const int N = 110 ;
int n , a[N] ;
int main(){
cin >> n ;
int res = 0 , ans = 0, r ,tmp = 0 ;
do{
cin>> r ;
if ( r< 0 ){
res ++ ;
if( res > 2 ){
a[ans] = tmp ;
tmp = 0 ;
res = 1 ;
ans ++ ;
}
}
tmp++;
}while(--n);
a[ans] = tmp ;
ans ++;
cout<< ans << endl;
for(;n < ans ; n ++) cout << a[n] << ' ';
return 0;
}
就是找到第三个小于0的数,他前面的装进一个文件夹
res:统计小于0的数的个数
ans:统计文件夹个数
a[ans]:存储每一次生成一个文件夹,里面装的数据个数
tmp:统计数据个数
判断输入数据,
如果小于0,那么res;然后判断 res是不是等于3(>2)了,如果是,那就要把前面(已经被 tmp计数了)存到a[ans]里,然后要把res=1(因为此时有三个小于0的数,既然是统计第三之前,那么第三个是不包括的,他包括在下一次的文件夹里),
tmp=0,(新一个文件夹数据个数归零)
ans(新建一个文件夹)
另外
5
0 -1 100 -1 0
这组数据不成立,如果没有达到三个小于0,那么就要把剩下的全部输出所以要在循环结束后收尾
a[ans] = tmp ;
ans ++;(为什么还要新建),是因为初始化的 ans=0