2 条题解

  • 0
    @ 2025-10-8 16:48:30
    #include <bits/stdc++.h>
    using namespace std;
    char dc[6][10] = {"in", "one", "out", "input", "puton", "output"};
    int b[6];
    char s[11100];
    bool f[11100];
    int main()
    {
        for (int i = 0; i < 6; i++)b[i] = strlen(dc[i]);
        int T;scanf("%d", &T);
        while (T--)
        {
            scanf("%s", s + 1);int v = strlen(s + 1);
            memset(f, 0, sizeof(f));f[0] = 1;
            for(int i=1;i<=v;i++)
                for(int j=0;j<=5;j++)
                    if(i>=b[j])
                    {
                        if (strncmp(s + i - b[j] + 1, dc[j], b[j]) == 0)
                            f[i] |= f[i - b[j]];
                    }
    
            if (f[v]) printf("YES\n");
            else      printf("NO\n");
        }
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:48:26
      #include <bits/stdc++.h>
      using namespace std;
      char dc[6][10] = {"in", "one", "out", "input", "puton", "output"};
      int b[6];
      char s[11100];
      bool f[11100];
      int main()
      {
          for (int i = 0; i < 6; i++)b[i] = strlen(dc[i]);
          int T;scanf("%d", &T);
          while (T--)
          {
              scanf("%s", s + 1);int v = strlen(s + 1);
              memset(f, 0, sizeof(f));f[0] = 1;
              for(int i=1;i<=v;i++)
                  for(int j=0;j<=5;j++)
                      if(i>=b[j])
                      {
                          if (strncmp(s + i - b[j] + 1, dc[j], b[j]) == 0)
                              f[i] |= f[i - b[j]];
                      }
      
              if (f[v]) printf("YES\n");
              else      printf("NO\n");
          }
          return 0;
      }
      • 1

      *【背包:匹配型背包】匹配字符串(题号1061)

      信息

      ID
      103
      时间
      1000ms
      内存
      128MiB
      难度
      3
      标签
      递交数
      102
      已通过
      58
      上传者