题解 | #B 牛客推荐系统开发之女装药水#

牛客推荐系统开发之女装药水

https://ac.nowcoder.com/acm/contest/11174/B

B题的奇解?

循环最多三次,每次找图中是1的点,碰到就在这地方扔药水。
时间复杂度O(1)?甚至可以解1000*1000的矩阵?

比赛时我写的循环是跑80000次
原理推测:既然要把所有点都变成0,那就碰到一个1就变一个,因为可能会影响之前的,所以再遍历。至于遍历3次即可应该是和只有0,1两个结果有关。遍历超过3次那么结果就会和之前的某次重复

```
#include <bits stdc++.h>
const int maxn=8;
const int n=4;
using namespace std;

int ach[8]={0,0,1,0,-1};
int bch[8]={0,1,0,-1,0};

bool gra[maxn][maxn];
bool flag=1;

int main(){

int i,j;
int x;

memset(gra,0,sizeof(gra));

string s;

for(i=1;i<=n;i++)
{
    cin>>s;
    for(j=1;j<=n;j++)
    {
        if(s[j-1]=='1')
        {
            gra[i][j]=1;
        }
    }

}


// 1->0
int time=3;

while(time--)
{
for(i=1;i<=n;i++)
{
    for(j=1;j<=n;j++)
    {
        if(gra[i][j])
        {
            for(int k=0;k<=4;k++)
            {
                gra[i+ach[k]][j+bch[k]]=!gra[i+ach[k]][j+bch[k]];
            }
        }

    }

}

flag=1;

for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    {
        if(gra[i][j])
        {
            flag=0;
            break;
        }
    }       
    if(flag==1)
        break;
}




if(flag)
    printf("YES\n");
else
    printf("NO\n");

}
```

全部评论

相关推荐

不愿透露姓名的神秘牛友
04-30 11:43
春招失败、父母离婚,好像我的人生一团糟,一年来压力大到常常崩溃。不知道能跟谁聊,朋友其实对我非常好,但是她无意中表达出来的家庭幸福都会刺痛到我……和ai聊天,我的未来在更高处,不在楼下,忍不住爆哭😭
youngfa:害,妹妹,我是一个研究生(很上进很想找到好工作的那种),但去年因为生病回家休养错过了秋招(当时对我的冲击也是非常大的),这学期返校来了也是把论文盲审交了后才开始找工作,现在也是一个offer没有,但我就没有像你一样把这个阶段性的事情绑定到人生上,人生不仅很长,也很广阔,先停下来,放松一下哦。不要被外部环境灌输的思维操控了,好好爱自己!
点赞 评论 收藏
分享
04-25 18:13
五邑大学 Java
无面如何呢:用心包装一下自己的实习
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务