题意: 在给定01串中,问能分割成多少个子串?每个子串只有一个1.
dp
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 #include<cstdlib> 5 #include<cstdio> 6 #include<set> 7 #include<map> 8 #include<vector> 9 #include<cstring> 10 #include<stack> 11 #include<cmath> 12 #include<queue> 13 #include <bits/stdc++.h> 14 using namespace std; 15 #define INF 0x3f3f3f3f 16 #define ll long long 17 #define clc(a,b) memset(a,b,sizeof(a)) 18 const int maxn=1000000; 19 const int mod=1e9+7; 20 21 ll dp[110]; 22 int n; 23 int a[110]; 24 25 int main() 26 { 27 while(~scanf("%d",&n)) 28 { 29 clc(dp,0); 30 for(int i=0;i<n;i++) 31 cin>>a[i]; 32 dp[0]=1; 33 for(int i=1;i<=n;i++) 34 { 35 ll s=0; 36 for(int j=i-1;j>=0;j--) 37 { 38 s+=a[j]; 39 if(s==1) 40 dp[i]+=dp[j]; 41 } 42 } 43 cout<<dp[n]<<endl; 44 } 45 return 0; 46 }
时间: 2024-10-11 00:33:14