題目敘述

給你一個 $n\times n$ $(1\le n\le 100)$ 大小的棋盤蛋糕,其中某些標記為 C 的位置上頭有巧克力。 請你幫忙算算有多少組巧克力的兩兩配對,使得它們位於同一行或同一列。

題解

只要計算每一個行、和每一個列看得到多少巧克力即可,最後把他們加起來。

參考程式碼

// by tmt514
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>
#include <vector>
#define SZ(x) ((int)(x).size())
#define FOR(it, c) for(__typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it)
using namespace std;
typedef long long LL;

int row[105], col[105];
char a[105][105];
int main(void) {
  int n;
  scanf("%d", &n);
  for(int i=0;i<n;i++) scanf("%s", a[i]);
  for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
      if(a[i][j]=='C') {
        ++row[i];
        ++col[j];
      }
  int ans = 0;
  for(int i=0;i<n;i++) ans += (row[i]*(row[i]-1))/2;
  for(int i=0;i<n;i++) ans += (col[i]*(col[i]-1))/2;
  printf("%d\n", ans);
  return 0;
}