0分。。。
#include<bits/stdc++.h>
using namespace std;
int r,c,sr,sc,cnt,ans;
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
int main()
{
char temp;
scanf("%d%d",&r,&c);
int** dp=new int*[r+1];
for(int i=0;i<=r;i++)
{
dp[i]=new int[c+1];
}
for(int i=1;i<=r;i++)
{scanf("%c",&temp);
for(int j=1;j<=c;j++)
{
scanf("%c",&temp);
if(temp=='K')
{
dp[i][j]=1;
cnt++;
}
else if(temp=='S')
{
sr=i;
sc=j;
}
}
}
scanf("%c",&temp);
int k,xa,ya,tx,ty;
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++)
{
if(dp[i][j])
{
dp[i][j]=0;
ans++;
xa=sr-i;
ya=sc-j;
k=gcd(abs(xa),abs(ya));
xa/=k;
ya/=k;
tx=sr;
ty=sc;
while(1)
{
tx-=xa;
ty-=ya;
if(tx>r||ty>c||tx<1||ty<1) break;
if(dp[tx][ty]){
dp[tx][ty]=0;
cnt++;
}
if(cnt==0) break;
}
if(cnt==0) break;
}
}
if(cnt==0) break;
}
printf("%d",ans);
for(int i=0;i<=r;i++)
delete[] dp[i];
delete[] dp;
return 0;
}