【问题描述】

对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向右看、或者从上向下看是递增的。

例如,如下矩阵中
YQPD
BKEZ
AFYV
有BKZ、BEZ、AFY、AFV、AKP、DEF 等 6 个三升序列。注意当三个字母是从左下到右上排列时,从左向右看和从上向下看是不同的顺序。

对于下面的 30 行 50 列的矩阵,请问总共有多少个三升序列?(如果你把以下文字复制到文本文件中,请务必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 inc.txt,内容与下面的文本相同)

VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG
SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF
ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA
BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL
YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH
ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU
XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR
ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG
MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA
VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF
GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC
EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK
PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW
CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP
RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS
PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR
JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL
YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP
HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN
DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF
LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW
CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ
IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI
ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB
HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP
FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS
VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ
BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR
RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY
ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX

这道题由于用题目要求的数据规模,不容易看出结果对错,所以推荐先使用题目例子里的3行4列来调试代码,唔暴力真香

#include <iostream>
#include <vector>
#include<fstream>#include <sstream>using namespace std;int main() {vector<vector<char>>data(3,vector<char>(4));ifstream fin("inc.txt");for( int i=0; i< 3; i++ )for(int j=0; j < 4; j++ ){fin>> data[i][j];}fin.close();int ans = 0;int change[5][2]={{0, 1},{1, 1},{1, 0},{-1, 1},{1, -1}};for(int i = 0; i<3;i++){for(int j=0; j<4; j++){for(int k=0;k<5;k++){int dx = change[k][0];int dy = change[k][1];int x1 = i;int y1 = j;while (1){x1+=dx;y1+=dy;int x2 = x1;int y2 = y1;if(x1<0||y1<0||x1>=3||y1>=4)break;while(1){x2+=dx;y2+=dy;if(x2<0||y2<0||x2>=3||y2>=4)break;if (data[i][j]<data[x1][y1]&&data[x1][y1]<data[x2][y2]){ans+=1;cout<<data[i][j]<<data[x1][y1]<<data[x2][y2]<<endl;}}}}}}cout<<ans;return 0;
}

现在可以看到输出为:

DEF
BKZ
BEZ
AFY
AFV
AKP
6
Process finished with exit code 0

粗糙的验证了算法的正确性(非常不严谨但是够用就行)之后,把3,4,改成对应的30和50,然后把inc.txt中的内容改过来就行了。
如果是用clion调试的话,要注意把inc.txt放进cmake-build-debug文件夹里,或者无论放在哪,使用绝对路径。

2019\National _C_C++_A\试题 A: 三升序列相关推荐

  1. 蓝桥杯第十届国赛C++研究生组 试题 A: 三升序列

    试题 A: 三升序列 [问题描述] 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个 字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向 右看.或者从上向下看是 ...

  2. 2019\National _C_C++_C\试题 C: 平方拆分

    [问题描述] 将 2019 拆分为若干个两两不同的完全平方数之和,一共有多少种不同的方法? 注意交换顺序视为同一种方法,例如 132 + 252 + 352 = 2019 与 132 + 352 + ...

  3. 2019\National _C_C++_C\试题 B: 递增序列

    [问题描述] 对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这两个字母从左向右看.或者从上向下看是递增的. 例如,如下矩阵中 ...

  4. 三升序列 和递增序列

    递增序列 对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个 字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这两个字母从左向 右看.或者从上向下看是递增的. 例如,如下矩阵中 ...

  5. 2019第十届蓝桥杯A组决赛(国赛)A题(三升序列)

    2019第十届蓝桥杯A组决赛(国赛)A题(三升序列) 输入: VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNK ...

  6. LQBv23-Python:三升序列

    2019-/National_C_C++_A/试题 A:三升序列 [问题描述] 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上 ...

  7. C/C++蓝桥杯三升序列

    本题答案可能是错的,我算出的是180414,和很多博主的答案不一样,我也不太懂哪里有问题,大家可以探讨一下 题目描述 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行 ...

  8. 梅森素数、猜年龄、啤酒饮料、武功秘籍、调和级数、李白打酒、猜字母、扩散、三升序列、寻找2020

    梅森素数 题目 如果一个数字的所有真因子之和等于自身,则称它为"完全数"或"完美数" 例如:6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + ...

  9. 22.1.2是否存在三升序列

    给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列. 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < ...

最新文章

  1. 官方 | TensorFlow 2.0分布式训练教程
  2. Javascript 节点 全面解析
  3. linux系统上tomcat启动正常,但浏览器无法访问
  4. java自动雨刷系统,安装雨量传感器实现自动大灯/自动雨刷(详细方法)多图!!
  5. day38 css的4种引入方式
  6. Android控制手机振动相关
  7. 动态规划训练12 [G - You Are the One HDU - 4283 ]
  8. 【BZOJ3609】人人尽说江南好,博弈
  9. [C++] 如此聪明的C++编译器
  10. java版hive的UDF(临时函数与永久函数)
  11. Html学习总结(2)——Html页面head标签元素的意义和应用场景
  12. 防止第二代身份证泄露隐私
  13. 恒生UFX交易接口基本介绍
  14. Centos 下 mysql 安装过程
  15. uni-app 生成邀请二维码海报
  16. 计算机系统的性能建模与设计 排队论实战,计算机系统的性能建模与设计:排队论实战(计算机科学丛书)...
  17. 在前端layui项目中使用ztree
  18. 玩PyTorch?你不得不看的PyTorch资源大列表
  19. HTML的无序(ul)、有序(ol)、定义(dl)列表标签
  20. PHP八字强弱计算,八字强弱自动计算,在线测试生辰八字强弱

热门文章

  1. 在该系统上全局禁用了虚拟打印功能,不会为该虚拟机启用此功能。虚拟设备“serial0“”将开始断开连接。
  2. 前端Vue简单编写一个幸运大转盘抽奖游戏
  3. 云服务器操作系统 版本选择,云服务器操作系统 版本选择
  4. Windows10系统的Linux子系统中安装MySQL数据库心得
  5. 怎么教你如何查看电脑的蓝牙版本【解决方案】
  6. 在uniapp中如何使用icon图标
  7. win7(主机)+win7虚拟机(vmware,被调试机)+windbg配置内核驱动调试
  8. 痞子衡嵌入式:语音处理工具pzh-speech诞生记(6)- 文语合成实现(pyttsx3, eSpeak1.48.04)...
  9. 年轻程序员如何快速成长
  10. Java项目:电影院售票管理系统(java+Servlet+JSP+JDBC+Mysql)