题意:一段01串 分割成段 每段只能有一个1 问一段串有多少种分割方式
思路:两个1之间有一个0就有两种分割方式,然后根据分步乘法原理来做、
(不过这里有一组0 1 0这种数据的话就不好直接处理,所以遇到第一个1才开始标记)
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 long long l=0; 6 int n; 7 cin>>n; 8 int a; 9 int j=0; 10 int s=0; 11 for(int i=0;i<n;i++) 12 { 13 cin>>a; 14 if(s) 15 { 16 if(a==1){ 17 l*=j+1; 18 j=0;} 19 else 20 j++; 21 } 22 if(a==1 && s!=1) 23 s=1,l=1; 24 } 25 cout<<l; 26 }
时间: 2024-10-22 09:03:03