【C语言蓝桥杯每日一题】—— 递增序列
【C语言蓝桥杯每日一题】—— 递增序列😎
- 前言🙌
- 递增序列🙌
- 总结撒花💞
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!
😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
前言🙌
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】—— 递增序列~ 都是精华内容,可不要错过哟!!!😍😍😍
递增序列🙌
对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一
45
45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。
例如,如下矩阵中
LANN
QIAO
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
解题思路分析: 😍
- 首先创建一个字符数组来存储以这个字符矩阵,必要忘了还要存储 ‘\0’。
- 然后利用gets循环输入每一行的字符串。
- 通过循环遍历这个矩阵的每一个元素。
- 横向判断,从每一行的首元素开始,和该行的每一个元素进行比较,符合递增条件的就让count++。
- 纵向判断:从第一列的首元素开始,和该列的每一个元素进行比较,符合递增条件的就让count++。
- 和上面思路一致,让位于矩阵每一条右下斜线的前一个元素和后面元素依次进行比较,如果满足,就让count++。
- 比较特殊的是矩阵每条右上斜线的判断,只需要根据先后两个元素相不相等作为判断条件。例如2x2 矩阵|a b| |c d|的副对角线为cb,从左往右顺序为cb,从上往下顺序为bc,也就是说只要
这两个字母不相等,必回有一次count++。而右下斜线就不能这样判断,因为其从左到右和从上到下的排列顺序都是一样的。以上面的那个2x2 矩阵|a b| |c d|的主对角线为例,从左往右顺序为,从上往下顺序为ad,所以要和右上斜线判断条件区分开来不要混淆了。
解题源码分享: 😍
#include <stdlib.h>
#include <stdio.h>
#include<string.h>
int main()
{
//输入的是一个字符串,别忘了存放\0
char str[30][51];
int i = 0;
int j = 0;
int l = 0;
for (i = 0; i < 30; i++)
{
gets(str[i]);
}
//斜向坐标
int m = 0;
int n = 0;
int count = 0;
for (i = 0; i < 30; i++)
{
for (j = 0; j < 50; j++)
{
//横向
for (l = j; l < 50; l++)
{
if (str[i][j] < str[i][l])
count++;
}
//纵向
for (l = i; l < 30; l++)
{
if (str[i][j] < str[l][j])
count++;
}
//右下,斜向
for (m = i, n = j; m < 30 && n < 50; m += 1, n += 1)
{
if (str[i][j] < str[m][n])
count++;
}
//右上,斜向
for (m = i, n = j; m >= 0 && n < 50; m -= 1, n += 1)
{
if (str[i][j] != str[m][n])
count++;
}
}
}
printf("%d", count);
return 0;
}
程序输出结果验证: 😊
总结撒花💞
本篇文章旨在分享【C语言蓝桥杯每日一题】—— 递增序列。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘