1 条题解

  • 0
    @ 2025-8-24 21:31:50

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Angel_Virus
    **

    搬运于2025-08-24 21:31:50,当前版本为作者最后更新于2017-11-08 20:18:25,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    其实这题很简单,找对方法是关键。

    找到无风的o点,然后开始推路径,然后将能到的点设为true,最后统计TRUE的个数就AC

    #include<iostream>
    using namespace std;
    int i,j,n,m,num;
    char a[1002][1002];
    bool b[1002][1002];
    void gui(int i,int j)   //推路径
    {  b[i][j]=true; //将这点记为true
      if(a[i+1][j]=='u') gui(i+1,j);
      if(a[i-1][j]=='d') gui(i-1,j);
      if(a[i][j+1]=='l') gui(i,j+1);
      if(a[i][j-1]=='r') gui(i,j-1);
    }
    int main()
    {
       //freopen("Lsan.in","r",stdin);
       //freopen("Lsan.out","w",stdout);
       cin>>n>>m;
       for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>a[i][j];
       for(i=1;i<=n;i++) for(j=1;j<=m;j++)
          if(a[i][j]=='o') gui(i,j);  //如果是无风点,则开始推路
         for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(b[i][j]) num++; //统计个数
        cout<<num<<'\n'; //个人习惯,喜欢打换行符
     //fclose(stdin);fclose(stdout);
     //system("pause");
     return 0;   
    }
    
    • 1

    信息

    ID
    881
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者