CSU 2166: 卖萌表情(2018湖南省赛)

传送门

这题需要确定每种表情的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
",ans);
    }

    return 0;
}

/**********************************************************************
	Problem: 2166
	User: leon_
	Language: C++
	Result: AC
	Time:48 ms
	Memory:3008 kb
**********************************************************************/
原文地址:https://www.cnblogs.com/eason9906/p/11754868.html