CSU 2166: 賣萌表情(2018湖南省賽)
阿新 • • 發佈:2018-10-31
這題需要確定每種表情的2種形式的優先順序,然後直接遍歷一遍矩陣即可。
兩種表情是第二個形式的優先順序高
/* 通過 ^ ^ ^ 和 ^ ^ ^ 可以確定第一種 v v v v v v 通過 和 可以確定第二種 > < < > > < < > > < < > */ #include<bits/stdc++.h> #define fuck(x) cout<<#x<<" "<<x<<endl; using namespace std; char mp[1005][1005]; int main() { int n,m,ans; while(scanf("%d %d",&n,&m)!=EOF) { ans=0; for(int i=0;i<=n+5;i++) for(int j=0;j<=m+5;j++) mp[i][j]=0; for(int i=1;i<=n;i++) scanf("%s",mp[i]+1); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(mp[i][j]=='^') { if(mp[i+1][j-1]==mp[i+1][j+1]&&mp[i+1][j+1]=='v') { ans++; mp[i][j]=mp[i+1][j-1]=mp[i+1][j+1]=0; ///fuck(i); ///fuck(j); ///cout<<2<<endl; } else if(mp[i][j+2]=='^'&&mp[i+1][j+1]=='v') { ans++; mp[i][j]=mp[i][j+2]=mp[i+1][j+1]=0; ///fuck(i); ///fuck(j); ///cout<<1<<endl; } } else if(mp[i][j]=='<') { if(mp[i-1][j+1]=='>'&&mp[i+1][j+1]=='>') { ans++; mp[i][j]=mp[i-1][j+1]=mp[i+1][j+1]=0; ///fuck(i); ///fuck(j); ///cout<<3<<endl; } else if(mp[i+1][j+1]=='>'&&mp[i+2][j]=='<') { ans++; mp[i][j]=mp[i+1][j+1]=mp[i+2][j]=0; } } } printf("%d\n",ans); } return 0; } /********************************************************************** Problem: 2166 User: leon_ Language: C++ Result: AC Time:48 ms Memory:3008 kb **********************************************************************/