游游拿到了一个字符矩阵,她想知道有多少个三角形满足以下条件: 1. 三角形的三个顶点分别是 y、o、u 字符。 2. 三角形为直角三角形,且两个直角边一个为水平、另一个为垂直。
区块链毕设网qklbishe.com为您提供问题的解答
游游拿到了一个字符矩阵,她想知道有多少个三角形满足以下条件:
1. 三角形的三个顶点分别是 y、o、u 字符。
2. 三角形为直角三角形,且两个直角边一个为水平、另一个为垂直。
using namespace std;
typedef long long int64 ;
void print(vector<vector<char>> tu){
int m=tu.size(),n=tu[0].size();
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cout<<tu[i][j]<<‘ ‘;
}
cout<<endl;
}
}
void print(vector<vector<int>> tu){
int m=tu.size(),n=tu[0].size();
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cout<<tu[i][j]<<‘ ‘;
}
cout<<endl;
}
}
int main() {
int m,n;
cin>>m>>n;
vector<vector<char>> tu(m,vector<char>(n));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>tu[i][j];
}
}
vector<vector<int>> hang(m,vector<int> (3));
vector<vector<int>> lie(n,vector<int> (3));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
char t=tu[i][j];
if(t==’y’){
hang[i][0]++;
lie[j][0]++;
}
if(t==’o’){
hang[i][1]++;
lie[j][1]++;
}
if(t==’u’){
hang[i][2]++;
lie[j][2]++;
}
}
}
// print(hang);
// cout<<endl;
// print(lie);
// cout<<endl;
int64 res=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
char t=tu[i][j];
if(t==’y’){
int hango=hang[i][1];
int hangu=hang[i][2];
int lieo=lie[j][1];
int lieu=lie[j][2];
res+=hango*lieu;
res+=hangu*lieo;
}
if(t==’o’){
int hangy=hang[i][0];
int hangu=hang[i][2];
int liey=lie[j][0];
int lieu=lie[j][2];
res+=hangy*lieu+hangu*liey;
}
if(t==’u’){
int hangy=hang[i][0];
int hango=hang[i][1];
int liey=lie[j][0];
int lieo=lie[j][1];
res+=hangy*lieo+hango*liey;
}
// cout<<i<<‘ ‘<<j<<‘ ‘<<res<<endl;
}
}
cout<< res;
}
// 64 位输出请用 printf("%lld")
以上就是关于问题游游拿到了一个字符矩阵,她想知道有多少个三角形满足以下条件:
1. 三角形的三个顶点分别是 y、o、u 字符。
2. 三角形为直角三角形,且两个直角边一个为水平、另一个为垂直。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训