51nod 1337 翻转游戏

来源:互联网 发布:windows安装bugfree 编辑:程序博客网 时间:2024/06/08 07:15

从后向前扫即可。情况有点多,不要落下就行。

#include<bits/stdc++.h>using namespace std;char mz[55][55],str[55];int main(){int T,i,j,n,m,ans,open,close;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(i=1;i<=n;i++)for(j=0;j<m;j++)scanf(" %c",&mz[i][j]);for(i=0;i<m;i++)mz[0][i]='-';for(i=0;i<m;i++)str[i]=mz[n][i];ans=n;for(i=n-1;i>=0;i--){close=open=0;for(j=0;j<m;j++){if(mz[i][j]=='?'||mz[i][j]==str[j])continue;if(str[j]=='?')str[j]=mz[i][j];else if(mz[i][j]=='+')open=1;elseclose=1;}if(close){ans++;for(j=0;j<m;j++){if(mz[i][j]=='-')str[j]='-';if(mz[i][j]=='?'&&str[j]=='+')str[j]='?';}}if(open){ans++;for(j=0;j<m;j++){if(mz[i][j]=='+')str[j]='+';if(mz[i][j]=='?'&&str[j]=='-')str[j]='?';}}}printf("%d\n",ans);}}


0 0
原创粉丝点击