公式
B - Count Subgrid 解説
by
B - Count Subgrid 解説
by
kyopro_friends
問題原案:admin
この問題のようにあるものが何種類あるかを求めるには、数える対象のものを全てsetに入れてそのサイズを求めるのが簡単です。
取り出した \(M\times M\) の領域を適当な状態に持ってsetに入れましょう。
実装例(C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,M;
cin >> N >> M;
vector<string>S(N);
for(int i=0;i<N;i++)cin >> S[i];
set<vector<string>>grid_set;
for(int i=0;i<N-M+1;i++)for(int j=0;j<N-M+1;j++){
vector<string>grid;
for(int ii=i;ii<i+M;ii++)grid.push_back(S[ii].substr(j,M));
grid_set.insert(grid);
}
cout << grid_set.size() << endl;
}
pythonの場合、listをsetに入れることはできないので、tupleを用いる必要があります。
実装例(Python)
N,M=map(int,input().split())
S=[input() for _ in range(N)]
grid_set=set()
for i in range(N-M+1):
for j in range(N-M+1):
grid = tuple(S[ii][j:j+M] for ii in range(i,i+M))
grid_set.add(grid)
print(len(grid_set))
投稿日時:
最終更新:
