【C语言蓝桥杯每日一题】—— 递增序列

  • 前言
    • 递增序列
  • 总结撒花


博客昵称:博客小梦
最喜欢的座右铭:全神贯注的上吧!!!
作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

博主小留言:哈喽!各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!

前言

  哈喽各位友友们,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!我仅已此文,和大家分享【C语言蓝桥杯每日一题】—— 递增序列~ 都是精华内容,可不要错过哟!!!

递增序列

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

例如,如下矩阵中

LANNQIAO

VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAGSDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQFZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGABDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRLYVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKHZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBUXFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLRZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPGMHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPAVIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIFGWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJCEKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASKPEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWWCGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZPRWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGSPFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMRJNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECLYZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLPHBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLNDQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGFLXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYWCZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQIYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYIZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZBHGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKPFEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEASVJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJBMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSRRRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVYABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX

解题思路分析:

  • 首先创建一个字符数组来存储以这个字符矩阵,必要忘了还要存储 ‘\0’。
  • 然后利用gets循环输入每一行的字符串。
  • 通过循环遍历这个矩阵的每一个元素。
  • 横向判断,从每一行的首元素开始,和该行的每一个元素进行比较,符合递增条件的就让count++。
  • 纵向判断:从第一列的首元素开始,和该列的每一个元素进行比较,符合递增条件的就让count++。
  • 和上面思路一致,让位于矩阵每一条右下斜线的前一个元素和后面元素依次进行比较,如果满足,就让count++。
  • 比较特殊的是矩阵每条右上斜线的判断,只需要根据先后两个元素相不相等作为判断条件。例如2×2 矩阵|a b| |c d|的副对角线为cb,从左往右顺序为cb,从上往下顺序为bc,也就是说只要
    这两个字母不相等,必回有一次count++。而右下斜线就不能这样判断,因为其从左到右和从上到下的排列顺序都是一样的。以上面的那个2×2 矩阵|a b| |c d|的主对角线为例,从左往右顺序为,从上往下顺序为ad,所以要和右上斜线判断条件区分开来不要混淆了。

解题源码分享:

#include #include #include 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语言蓝桥杯每日一题】—— 递增序列。希望大家通过阅读此文有所收获!如果我写的有什么不好之处,请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~