#include <iostream>
using namespace std;
const int N = 1005;
int n,m,ans;
char a[N][N];
bool v[N][N];
struct AC{
int x,y,ans;
} c[N];
int dfs(int x,int y,int step){
if(x - step < 1 || x + step > n || y - step < 1 || y + step > m){
return step - 1; // 如果越界就返回
}
if(a[x - step][y] == '*' && a[x + step][y] == '*' && a[x][y - step] == '*' && a[x][y + step] == '*'){ // 如果满足条件就标记并继续搜
v[x][y] = v[x - step][y] = v[x + step][y] = v[x][y - step] = v[x][y + step] = 1;
return dfs(x,y,step + 1);
}
return step - 1; // 不满足条件
}
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
cin >> a[i][j];
}
}
for(int i = 2;i < n;i++){
for(int j = 2;j < m;j++){
if(a[i][j] == '*'){
int res = dfs(i,j,1);
for(;res;res--){ // 存入位置、大小
c[++ans].ans = res;
c[ans].x = i;
c[ans].y = j;
}
}
}
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(!v[i][j] && a[i][j] == '*'){
cout << -1; // 如果有*不属于任何星星输出-1
return 0;
}
}
}
cout << ans << '\n';
for(int i = 1;i <= ans;i++){
cout << c[i].x << ' ' << c[i].y << ' ' << c[i].ans << '\n'; // 输出答案
}
return 0;
}
第十六个点我输出-1,但标准答案不是-1,求大佬帮助,我都要改吐了QAQ