AOJ0578 看板
joi予選の問題。
こういうのめっちゃ苦手だけど成長したのか瞬殺だった。
解法:線形探索
#include <cstdio> #include <cstring> using namespace std; int main(){ int n,ans=0; char name[27],s[102][102]; scanf("%d",&n); scanf("%s",&name); for(int i = 0;i < n;i++){ scanf("%s",&s[i]); } int nlen = strlen(name); for(int i = 0;i < n;i++){ int slen = strlen(s[i]); for(int start = 0;start < slen;start++){ if(s[i][start] != name[0]) continue; for(int haba = 0;haba < slen;haba++){ for(int j = 1;j < nlen;j++){ if(name[j] != s[i][start+(haba+1)*j]) goto out; if(start+(haba+1)*j >= slen) goto out; } ans++; goto heaven; out: ; } } heaven: ; } printf("%d\n",ans); return 0; }