CF629A Far Relative’s Birthday Cake

题目描述
Door’s family is going celebrate Famil Doors’s birthday party. They love Famil Door so they are planning to make his birthday cake weird!

The cake is a n×n n×n square consisting of equal squares with side length 1 1 . Each square is either empty or consists of a single chocolate. They bought the cake and randomly started to put the chocolates on the cake. The value of Famil Door’s happiness will be equal to the number of pairs of cells with chocolates that are in the same row or in the same column of the cake. Famil Doors’s family is wondering what is the amount of happiness of Famil going to be?

Please, note that any pair can be counted no more than once, as two different cells can’t share both the same row and the same column.

输入格式
In the first line of the input, you are given a single integer n n ( 1<=n<=100 1<=n<=100 ) — the length of the side of the cake.

Then follow n n lines, each containing n n characters. Empty cells are denoted with ‘.’, while cells that contain chocolates are denoted by ‘C’.

输出格式
Print the value of Famil Door’s happiness, i.e. the number of pairs of chocolate pieces that share the same row or the same column.

题意翻译
题目描述

多尔的家人正在庆祝多尔的生日派对。他们爱多尔,所以他们计划让他的生日蛋糕变得不可思议的!

蛋糕是一个由n×n的等边正方形组成的形状,长度为1。每个方块要么是空的,要么是由一个巧克力组成的。他们买了蛋糕,便开始把巧克力放在蛋糕上。“家庭之门”的幸福值等于蛋糕中同一行或同一列中装有巧克力的一对细胞的数量。多尔的家人想知道他们的幸福程度是多少?

输入输出格式

输入格式:

第一行输入一个整数n(1<=n<=100),表示蛋糕边的长度。然后输入n行数,每行有n个字符。空的细胞用’.'表示,而含有巧克力的细胞用“C”表示。

输出格式:

输出“家庭之门”幸福感的价值,即同一行或同一列的一对巧克力片的数量。

输入输出样例
输入 #1

3
.CC
C..
C.C

输出 #1

4

输入 #2

4
CC..
C..C
.CC.
.CC.

输出 #2

9

说明/提示
If we number rows from top to bottom and columns from left to right, then, pieces that share the same row in the first sample are:

  1. (1,2)and (1,3)
  2. (3,1) and (3,3)
    Pieces that share the same column are:
  3. (2,1) and (3,1)
  4. (1,3) and (3,3)
#include <iostream>
#include <string>
using namespace std;
int main() {
	int n, happy = 0;
	cin >> n;
	string* cake = new string[n];
	for (int i = 0; i < n; ++i) {
			cin >> cake[i];
	}
	for (int i = 0; i < n; ++i) {
		int temp = 0;
		for (int j = 0; j < n; ++j) 
			if (cake[i][j] == 'C') 
				temp++;
		happy += temp * (temp - 1) / 2;
	}
	for (int i = 0; i < n; ++i) {
		int temp = 0;
		for (int j = 0; j < n; ++j)
			if (cake[j][i] == 'C')
				temp++;
		happy += temp * (temp - 1) / 2;
	}
	cout << happy;
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值