C++某题
#include<bits/stdc++.h>
using namespace std;
int a[105][105];
int n,ci=0;
int pd(int i,int j,int k) //遍历“X”形,判断是否全为1,
{
if(k-j<0) return 0;
int x1=i,y1=j,y2=k;
for(int u=1;u<=k-j;u++)
{
x1++;
y1++;
y2--;
if(a[x1][y1]==0) return 0; //边界不是‘0’
if(a[x1][y2]==0) return 0; //边界不是‘0’
}
return 1;
}
int main()
{
cin>>n;
char t;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>t;
a[i][j]=t-'0';
}
}
for(int i=1;i<=n;i++) //(遍历每一行)
{
for(int j=1;j<=n;j++) //(遍历每一列)
{
if(a[i][j]==1) //若此格为‘1’
{
for(int k=j+1;k<=n;k++) //遍历与此‘1’同行的每一个‘1’)
{
if(a[i][k]==1) //若同行的格子为‘1’
if(pd(i,j,k)) //调用判断"X"函数
ci++; //如为"X",更新答案
}
}
}
}
cout<<ci;
return 0;
}