目录
一 . 求正方形数量
一.
给定一个 \(9 \times 9\) 的矩阵。
矩阵中只包含 .
, #
两种字符。
请求出以 #
作为四个顶点构成的正方形的数量。
方法:暴力枚举
点击查看代码
#include <bits/stdc++.h>
using namespace std;
char a[15][15];
struct Solu{int x,y;
};
int dis(Solu a,Solu b){return pow((a.x-b.x),2)+pow((a.y-b.y),2);
}
bool check(Solu a1,Solu b1,Solu c1,Solu d1){//判断是否为直角三角形int Sqab=dis(a1,b1);int Sqac=dis(a1,c1);int Sqdb=dis(d1,b1);int Sqdc=dis(d1,c1);int Sqad=dis(a1,d1);if(Sqab==Sqac&&Sqac==Sqdb&&Sqdb==Sqdc){if(Sqab+Sqac==Sqad&&Sqdc+Sqdb==Sqad){return true;}}return false;
}
vector<Solu> v;
int main(){int cnt=0;for(int i=0;i<9;i++){for(int j=0;j<9;j++){cin>>a[i][j];if(a[i][j]=='#'){v.push_back({i,j});cnt++;}}}int ans=0;for(int i=0;i<cnt;i++){for(int j=i+1;j<cnt;j++){for(int k=j+1;k<cnt;k++){for(int l=k+1;l<cnt;l++){if(check(v[i],v[j],v[k],v[l])==true){ans++;}}}}}cout<<ans<<endl;return 0;
}