4 条题解
-
2
AC Code
#include<bits/stdc++.h> using namespace std; int a[101],n,m,ans=0; int main(){ // freopen("tetris.in","r",stdin); // freopen("tetris.out","w",stdout); cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; switch(m){ case 1:{ for(int i=1;i<=n-3;i++)if(a[i]==a[i+1]&&a[i+1]==a[i+2]&&a[i+2]==a[i+3])ans++; ans+=n; //如果这种方块竖着放的话,那么放哪里都符合条件了。(想一想,为什么?) break; } case 2:{ for(int i=1;i<=n-1;i++)if(a[i]==a[i+1])ans++; break; } case 3:{ for(int i=1;i<=n-1;i++)if(a[i+1]==a[i]-1)ans++; for(int i=1;i<=n-2;i++)if(a[i]==a[i+1]&&a[i+2]==a[i+1]+1)ans++; break; } case 4:{ for(int i=1;i<=n-1;i++)if(a[i]==a[i+1]-1)ans++; for(int i=1;i<=n-2;i++)if(a[i]==a[i+1]+1&&a[i+1]==a[i+2])ans++; break; } case 5:{ for(int i=1;i<=n-2;i++)if(a[i]==a[i+1]&&a[i+1]==a[i+2])ans++; for(int i=1;i<=n-1;i++)if(a[i]==a[i+1]+1)ans++; for(int i=1;i<=n-1;i++)if(a[i]==a[i+1]-1)ans++; for(int i=1;i<=n-2;i++)if(a[i]==a[i+1]+1&&a[i+2]==a[i+1]+1)ans++; break; } case 6:{ for(int i=1;i<=n-2;i++)if(a[i]==a[i+1]&&a[i+1]==a[i+2])ans++; for(int i=1;i<=n-1;i++)if(a[i]==a[i+1])ans++; for(int i=1;i<=n-1;i++)if(a[i]==a[i+1]+2)ans++; for(int i=1;i<=n-2;i++)if(a[i]==a[i+2]-1&&a[i+1]==a[i+2])ans++; break; } case 7:{ for(int i=1;i<=n-1;i++)if(a[i]==a[i+1])ans++; for(int i=1;i<=n-2;i++)if(a[i]==a[i+1]&&a[i+1]==a[i+2])ans++; for(int i=1;i<=n-1;i++)if(a[i]==a[i+1]-2)ans++; for(int i=1;i<=n-2;i++)if(a[i]==a[i+1]&&a[i+1]==a[i+2]+1)ans++; break; } } cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 1992
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- (无)
- 递交数
- 49
- 已通过
- 37
- 上传者