听灌佬多 P8630RE 求改
  • 板块灌水区
  • 楼主yjl_never_AC
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/24 20:57
  • 上次更新2024/12/25 13:09:07
查看原帖
听灌佬多 P8630RE 求改
1064183
yjl_never_AC楼主2024/12/24 20:57

后两个点 RE后两个点~RE

本蒟蒻干了114514本蒟蒻干了114514年

求你了大佬求你了大佬

:..o()o..:☆*: .。. o(≧▽≦)o .。.:*☆

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 2;
string s, x;
int cnt1[maxn][26], cnt2[26];
// cnt1->资料上的每个密码排列字母出现次数,cnt2->各行密码上的字母。
int n;
int ans; // 匹配次数的总和。
int main()
{
     cin >> s;
     for (int i = 0; i < s.size() - 7; i++) // 遍历每种密码,密码排列共size-7(size-8+1)种。
          for (int j = i; j <= i + 7; j++)  // 遍历每个密码。
               cnt1[i][s[j] - 'a']++;       // 记下资料上的每个密码排列字母出现次数。
     cin >> n;
     for (int k = 0; k < n; k++)
     {
          memset(cnt2, 0, sizeof(cnt2)); // 清空cnt2,方便下面计算。
          cin >> x;
          for (int i = 0; i < x.size(); i++)
               cnt2[x[i] - 'a']++;               // 记下本行密码上的各个字母出现次数。
          for (int i = 0; i < s.size() - 7; i++) // 遍历每种密码。
          {
               int flag = true;
               for (int j = 0; j < 26; j++)
                    if (cnt1[i][j] != cnt2[j])
                         flag = false; // 判断是否相同。
               if (flag)               // 相同。 
                    ans++;             // 可能性+1。 
          }
     }
     cout << ans;
     return 0;
}
2024/12/24 20:57
加载中...