[CSP]俄罗斯方块(枚举+模拟)

要点:

1.确定下坠4*4方块为1的格子在15*10大矩阵里的列数,4*4方块坐标从(1,1)开始的话列数对应就为1+n-1(n为最左边开始在大矩阵里的那一列)

2.整体性,4*4方块为1的坐标要单独保存,这几个为1的连通的4个方块必须整体下坠,当最下部分方块先触碰到第15行或者任意一个方块碰到大矩阵里为1的方块就结束。

#include <bits/stdc++.h>
using namespace std;
int a[16][11];
int b[5][5];
int x[5];int y[5];//存为1下坠块的坐标'
int n;
int main()
{
    for(int i=1;i<=20;i++)
    {
        if(i>=1&&i<=15)
        {
            for(int j=1;j<=10;j++)
            {
                cin>>a[i][j];
            }
        }
        if(i>=16&&i<=19)
        {
            for(int j=1;j<=4;j++)
            {
                cin>>b[i-15][j];
            }
        }
        if(i==20){
            cin>>n;
        }
    }
    int x_max=0;
    int t=1;
    for(int i=1;i<=4;i++)
    {
        for(int j=1;j<=4;j++)//大方块中从j=n开始,4->15,3->14,2->13,1->12行,行+11,j+n-1如何控制下坠的整体性?直接找出四个方块的坐标啊整体看
        {
            if(b[i][j]==1)
            {
                if(i>x_max)
                {
                    x_max=i;
                }
                x[t]=i;y[t]=j;
                t++;
            }

        }
    }
                
    int x1,x2,x3,x4,y1,y2,y3,y4;
    x1=x[1];y1=y[1]+n-1;
    x2=x[2];y2=y[2]+n-1;
    x3=x[3];y3=y[3]+n-1;
    x4=x[4];y4=y[4]+n-1;
     while(a[x1+1][y1]==0&&a[x2+1][y2]==0&&a[x3+1][y3]==0&&a[x4+1][y4]==0&&x_max<15)
    {
        x_max++;
        x1++;x2++;x3++;x4++;
    }
    a[x1][y1]=1;a[x2][y2]=1;a[x3][y3]=1;a[x4][y4]=1;
    for(int i=1;i<=15;i++)
    {
        for(int j=1;j<=10;j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

根据引用\[1\]和引用\[3\]的信息,我们可以得知顿顿需要在n天时间内完成m项科目的加强训练。每项科目有一个编号,编号为i,其中1≤i≤m。每项科目的训练时间为ti天,即从第a天开始训练科目i,训练将持续到第a+ti−1天。科目之间存在依赖关系,如果科目i依赖科目j,那么只能在科目j训练结束后,科目i才能开始训练。 对于csp202212-2题目中的c++训练计划,我们需要知道c++训练的编号以及训练的时间。根据题目描述,我们可以得知c++训练的编号为2。然而,题目中没有提供c++训练的具体时间。因此,我们无法确定c++训练的时间。 综上所述,我们无法确定c++训练的具体计划。 #### 引用[.reference_title] - *1* *3* [CCF CSP 202212-2 训练计划(C++)](https://blog.csdn.net/qq_46092061/article/details/129207826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [CCF-CSP真题《202212-2 训练计划》思路+python题解](https://blog.csdn.net/weixin_53919192/article/details/129084465)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luminous815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值