当前位置: 首页 > news >正文

CSP俄罗斯方块(简单易懂)

开始将题目理解成了,开始的列应该是从输入图案的最左端开始计算,将前面所有的空列都删掉,代码如下:


#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+10;
const int M = 1e5+10;
int a[20][20];
int b[5][5];int main(){for(int i = 0 ; i < 15 ; i++){for(int j = 0 ; j < 10 ; j++){cin >> a[i][j];}}for(int i = 0 ; i < 4 ; i++){for(int j = 0 ; j < 4 ; j++){cin >> b[i][j];}}int k;cin >> k;int flag = 0;int res = 0;for(int i = 0 ; i < 4 ; i++){for(int j = 0 ; j < 4 ; j++){if(b[j][i] == 1){flag = 1;res = i;break;}}if(flag == 1){break;}}vector<vector<int>> c(4,vector<int>(2,0));int num = 0;for(int i = 0 ; i < 4 ; i++){for(int j = res ; j < 4 ; j++){if(b[i][j] == 1){c[num][0] = i;c[num][1] = k + j - res;num++;}}}int xd = 0;for(int i = 1 ; i < 18 ; i++){if(c[0][0]+i < 15 && c[1][0]+i < 15 && c[2][0]+i < 15 && c[3][0]+i < 15 && a[c[0][0]+i][c[0][1]] == 0 && a[c[1][0]+i][c[1][1]] == 0 && a[c[2][0]+i][c[2][1]] == 0 && a[c[3][0]+i][c[3][1]] == 0){xd++;}else{break;}}for(int i = 0 ; i < 4 ; i++){a[c[i][0]+xd][c[i][1]] = 1;}for(int i = 0 ; i < 15 ; i++){for(int j = 0 ; j < 10 ; j++){cout << a[i][j] << " ";}cout << endl;}return 0;
}

结果只拿到了60分。

仔细看题,题目里写的是,只删除最左端的列,也就是说不管图案在哪里,都只删除最左端的一列。比如说输入的图案是
0 0 0 1
0 0 0 1
0 0 0 1
0 0 0 1
,也只删除最左列,即从第k列开始放的图案是
0 0 1
0 0 1
0 0 1
0 0 1,
得到的图案是这样的:
在这里插入图片描述

逆天了,我只能说CSP的出题人完全不靠谱

100分代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+10;
const int M = 1e5+10;
int a[20][20];
int b[5][5];int main(){for(int i = 0 ; i < 15 ; i++){for(int j = 0 ; j < 10 ; j++){cin >> a[i][j];}}int num = 0;vector<vector<int>> c(4,vector<int>(2,0));for(int i = 0 ; i < 4 ; i++){for(int j = 0 ; j < 4 ; j++){cin >> b[i][j];if(b[i][j] == 1){c[num][0] = i;c[num][1] = j;num++;}}}int k;cin >> k;for(int i = 0 ; i < 4 ; i++){c[i][1] += k - 1;}int xd = 0;for(int i = 1 ; i < 18 ; i++){if(c[0][0]+i < 15 && c[1][0]+i < 15 && c[2][0]+i < 15 && c[3][0]+i < 15 && a[c[0][0]+i][c[0][1]] == 0 && a[c[1][0]+i][c[1][1]] == 0 && a[c[2][0]+i][c[2][1]] == 0 && a[c[3][0]+i][c[3][1]] == 0){xd++;}else{break;}}for(int i = 0 ; i < 4 ; i++){a[c[i][0]+xd][c[i][1]] = 1;}for(int i = 0 ; i < 15 ; i++){for(int j = 0 ; j < 10 ; j++){cout << a[i][j] << " ";}cout << endl;}return 0;
}

相关文章:

  • C语言笔记21 •模拟atoi函数•
  • conda常见命令
  • 汽车R155法规中,汽车获取到的VTA证书,E后面的数字表示什么意思?
  • MySQL入门学习-查询进阶.别名
  • 携手AI,如何共赢未来?
  • java string类
  • 每日力扣刷题day05(小白简单题)
  • Python游戏编程:一步步用Python打造经典贪吃蛇小游戏
  • 知能行——考研数学利器
  • 牛马真的沉默了,入职第一天就干活
  • 梦幻西游手游挂机脚本,搬砖挂机赚米项目,号称单窗口日收益60+(教程+软件)
  • Python | Leetcode Python题解之第101题对称二叉树
  • 【输入示例100,999 输出示例4】水仙花数
  • 2024 一键批量下载雪球和东方财富文章导出excel和pdf
  • 视频号小店的保证金是多少钱?2024最新收费标准,一篇了解!
  • Angular数据绑定机制
  • HTML中设置input等文本框为不可操作
  • Java基本数据类型之Number
  • Js基础——数据类型之Null和Undefined
  • Linux Process Manage
  • python3 使用 asyncio 代替线程
  • Python利用正则抓取网页内容保存到本地
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spring Cloud Feign的两种使用姿势
  • underscore源码剖析之整体架构
  • 大主子表关联的性能优化方法
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 一文看透浏览器架构
  • 移动端 h5开发相关内容总结(三)
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • # linux从入门到精通(三)
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #define、const、typedef的差别
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (原創) 未来三学期想要修的课 (日記)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)winform之ListView
  • (转)重识new
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net framework profiles /.net framework 配置
  • .NET NPOI导出Excel详解
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 命令行参数包含应用程序路径吗?