P3654 First Step (ファーストステップ)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

P3654 First Step (ファーストステップ)

题目背景
知らないことばかりなにもかもがどうしたらいいの
一切的一切 尽是充满了未知数该如何是好
それでも期待で足が軽いよジャンプだ
但我仍因满怀期待而步伐轻盈起跳吧
温度差なんていつか消しちゃえってね
冷若冰霜的态度 有朝一日将会消失得无影无踪
元気だよ元気をだしていくよ
拿出活力 打起精神向前迈进吧
我们 Aqours要第一次举办演唱会啦
虽然学生会长看上去不怎么支持我们的样子可是有了理事长的支持我们还是被允许在校内的篮球场里歌唱
歌曲也好好地准备过了名字叫“最喜欢的话就没问题 (ダイスキだったらダイジョウブ)“大家一定会喜欢的吧
演唱会一定会顺利进行的
希望不要发生停电什么的事故哦……

题目描述
可是……这个篮球场好像很久没有使用过的样子啊……
里面堆满了学校的各种杂物呢……
我们 Aqours 的成员要怎么在里面列队站下呢

我们浦之星女子学院的篮球场是一个 RR 行 CC 列的矩阵其中堆满了各种学校的杂物 (用 # 表示)空地 (用 . 表示) 好像并不多的样子呢……

我们 Aqours 现在已经一共有 KK 个队员了要歌唱舞蹈起来的话我们得排成一条 1\times K1×K 的直线一个接一个地站在篮球场的空地上呢 (横竖均可)。

我们想知道一共有多少种可行的站位方式呢。
Aqours 的真正的粉丝的你能帮我们算算吗

首先我写的很长但是很简单不要怕。
首先我要分成三种情况
第一种有一个队员那我只需要知道有几个空地就有几个占位
第二种一个队员的都没有有点坑谁闲的没事计算完了告诉我没队员直接输出0 就可以
第三种使用两个循环找到空地之后继续往后面找如果连续的数量有K个就记录下来。找的时候先横着找然后再竖着找就可以了。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    char a[120][120];
    int p;
    cin>>p;
    int sum=0;

    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    //第一种情况
    if(p==1){
        int t=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(a[i][j]=='.')
                    t++;
            }
        }
        cout<<t;
        return 0;
    }
    //第二种情况
    else if(p==0){
        cout<<"0";
        return 0;
    }
    //第三种情况
    //横着找
    else{
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i][j]=='.'){
                int flag=1;
                for(int k=j+1;;k++){
                    if(flag==p) {
                        sum++;
                        break;
                    }

                    if(a[i][k]!='.'){
                        break;
                    }
                    else{
                        flag++;
                    }
                }
            }
        }
    }
//竖着找
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            if(a[j][i]=='.'){
                int flag=1;
                for(int k=j+1;;k++){
                    if(flag==p) {
                        sum++;
                        break;
                    }
                    if(a[k][i]!='.'){
                        break;
                    }
                    else{
                        flag++;
                    }
                }
            }
        }
    }
    cout<<sum;
    return 0;}
}

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“P3654 First Step (ファーストステップ)” 的相关文章

认识Java语言1年前 (2023-02-02)
Array 数组1年前 (2023-02-02)
单向链表1年前 (2023-02-02)
windows11预览版装WSA心得1年前 (2023-02-02)
RabbitMQ介绍1年前 (2023-02-02)