您的位置:首页 > 其它

codeforces 52B - Right Triangles 组合数

2013-02-10 13:27 387 查看
题意:给定一个矩阵,问里面有几个直角三角形,其中直角边于矩阵边品行。

做法:确定直角的顶点就可以了

#include <iostream>
#include <cstdio>
#include <cstring>
#define LL long long
const int LMT=1002;
using namespace std;
LL v[LMT];
char gra[LMT][LMT];
int main()
{
    int n,m;
    LL ans=0,cur;
    cin>>n>>m;
    for(int i=0;i<n;i++)scanf("%s",gra[i]);
    for(int i=0;i<n;i++)
      for(int j=0;j<m;j++)
      if(gra[i][j]=='*')v[j]++;
    for(int i=0;i<n;i++)
    {
        cur=0;
        for(int j=0;j<m;j++)
        if(gra[i][j]=='*')
        {
            cur++;
            ans+=(cur-1)*(v[j]-1);
        }
        cur=0;
        for(int j=m-1;j>=0;j--)
        if(gra[i][j]=='*')
        {
            cur++;
            ans+=(cur-1)*(v[j]-1);
        }
    }
    cout<<ans<<endl;
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: