P3654 First Step (ファーストステップ) - 洛谷 | 计算机科学教育新生态
First Step (ファーストステップ)
题目背景
我们 Aqours,要第一次举办演唱会啦!
虽然学生会长看上去不怎么支持我们的样子,可是有了理事长的支持,我们还是被允许在校内的篮球场里歌唱!
歌曲也好好地准备过了,名字叫“[最喜欢的话就没问题!“,大家一定会喜欢的吧!
演唱会一定会顺利进行的!
希望不要发生停电什么的事故哦……!
题目描述
可是……这个篮球场,好像很久没有使用过的样子啊……
里面堆满了学校的各种杂物呢……
我们 Aqours 的成员要怎么在里面列队站下呢?
我们浦之星女子学院的篮球场是一个 R 行 C列的矩阵,其中堆满了各种学校的杂物 (用 `#` 表示),空地 (用 `.` 表示) 好像并不多的样子呢……
我们 Aqours 现在已经一共有 K个队员了,要歌唱舞蹈起来的话,我们得排成一条 1X K的直线,一个接一个地站在篮球场的空地上呢 (横竖均可)。
我们想知道一共有多少种可行的站位方式呢。
Aqours 的真正的粉丝的你,能帮我们算算吗?
输入格式
第一行三个整数 R, C, K。
接下来的R行C列,表示浦之星女子学院篮球场。
输出格式
总共的站位方式数量。
样例 #1
样例输入
5 5 2
.###.
##.#.
..#..
#..#.
#.###
样例输出
8
(部分语句请返回洛谷查看,因为复制过来格式就变了)
对于所有数据,1 <= R,C <=100,1 <= k <= min(R,C)。
以下是彩蛋
在 LoveLive!Sunshine!! 动画第一季第三集中,Aqours 队长高海千歌演唱“最喜欢的话就没问题!”到副歌前时,学校因为雷击停电。
代码区:
#include<stdio.h>
int main(){
int r,c,k;
scanf("%d%d%d",&r,&c,&k);
char arr[r][c];
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
scanf(" %c",&arr[i][j]);
}
}
int count,sum=0;
for(int i=0;i<r;i++){ //对行在一条线上的情况进行计数
for(int j=0;j<c;j++){
count=0;
for(int h=0;h<k&&j+h<c;h++){ //j+h<c防止行下标越界
if(arr[i][j]==arr[i][j+h]&&arr[i][j]=='.'){
count++;
}
else{
break;
}
}
if(count==k){
sum++;
}
}
}
if(k>1){ //如果k=1,只需要统计一种情况
for(int i=0;i<r;i++){ //对列在一条线上的情况进行计数
for(int j=0;j<c;j++){
count=0;
for(int h=0;h<k&&i+h<r;h++){ //i+h<r防止列下标越界
if(arr[i][j]==arr[i+h][j]&&arr[i][j]=='.'){
count++;
}
else{
break;
}
}
if(count==k){
sum++;
}
}
}
}
printf("%d",sum);
return 0;
}
欢迎各位读者提出意见。
(菜菜洛谷奋斗小日记)
标签:篮球场,洛谷,int,P3654,样例,Aqours,我们 From: https://blog.csdn.net/2402_88149600/article/details/143725609