1,跟我经验里的都不像hhh
2,找找咋弄断点
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int arr[100]; int dp[100][100]; int main(){ memset(arr,0,sizeof(arr)); memset(dp,0,sizeof(dp)); int t,w; cin>>t>>w; for(int i=1;i<=t;i++) { cin>>arr[i]; if(i==1){ if(arr[1]==1) { dp[1][0]=1; dp[1][1]=0; } else { dp[1][0]=0; dp[1][1]=1; } } } for(int i=2;i<=t;i++) { for(int j=0;j<=w;j++) { if(j==0) { dp[i][j]=dp[i-1][j]+arr[i]%2; continue; } dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]); if(j%2+1==arr[i]) { dp[i][j]++; } } } cout<<dp[t][w]<<endl; }