AOJ0578看板

2017/12/05

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
",ans);
	
	return 0;
	
}