求助大佬
查看原帖
求助大佬
347979
wyzhf楼主2021/2/9 22:07

求助大佬! 帮忙看看

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int xx[4]={0,0,-1,1};
int yy[4]={-1,1,0,0};
int T,n,ans,cnt;string s1,s2;int vis[2][100010];
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        ans=0,cnt=0;
        memset(vis,0,sizeof(vis));
        scanf("%d",&n);
        cin>>s1;cin>>s2;
        for(int i=0;i<s1.length();++i)
        {
            char c=s1[i];
            if(c=='1')
            {
                vis[0][i]=1;//碰到1,vis置1
                cnt++;
            }
        }
        for(int i=0;i<s1.length();++i)
        {
            char c=s2[i];
            if(c=='1')
            {
                vis[1][i]=1;//碰到1,vis置1
                cnt++;
            }
        }
        for(int i=0;i<s1.length();++i)
        {
            char c=s1[i];
            //int x=0,y=0;
            int y=i;
            if(c=='1')
            {
                for(int i=0;i<4;++i)//搜索四方向
                {
                    int dx=0+xx[i];
                    int dy=y+yy[i];
                    if(dx==0&&dy>=0&&dy<=s1.length()-1&&!vis[dx][dy])
                    {//如果旁边有满足的方块,就置2
                        vis[dx][dy]=2;
                        ans++;
                    }
                }
            }
        }
        for(int i=0;i<s1.length();++i)
        {
            char c=s2[i];
            int y=i;
            if(c=='1')
            {
                for(int i=0;i<4;++i)//搜索四方向
                {//如果旁边有满足的方块,就置2
                    int dx=1+xx[i];
                    int dy=y+yy[i];
                    if(dx==1&&dy>=0&&dy<=s1.length()-1&&!vis[dx][dy])
                    {
                        vis[dx][dy]=2;
                        ans++;
                    }
                }
            }
        }
        if(ans==cnt)//如果满足的方块数等于当初题目要求的数目
            printf("RP");
        else
            printf("++");
        if(T!=0)
            puts(" ");
    }
    return 0;
}
2021/2/9 22:07
加载中...