成品网站nike源码免费,深圳网站建设网站设计软文推广,网站建设竞价托管服务,网站制作关键词每日一言
「 人生如逆旅#xff0c;我亦是行人。 」--临江仙送钱穆父-苏轼题目 杨氏矩阵
有一个数字矩阵#xff0c;矩阵的每行从左到右是递增的#xff0c;矩阵从上到下是递增的#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。
解法思路
法一#xff1a;…每日一言
「 人生如逆旅我亦是行人。 」--临江仙·送钱穆父-苏轼题目 杨氏矩阵
有一个数字矩阵矩阵的每行从左到右是递增的矩阵从上到下是递增的请编写程序在这样的矩阵中查找某个数字是否存在。
解法思路
法一暴力解法 把整个矩阵看成一个二维数组直接遍历整个数组寻找数字
代码
#includestdio.h
int main()
{int arr[][5] { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 };int i 0;int j 0;int n 0;scanf(%d, n);for (i 0; i 5; i){for (j 0; j 5; j){if (arr[i][j] n)break;}if (j 5){printf(有);break;}}if(j5)printf(无);return 0;
}虽然也能达到效果但是效率堪忧啊
法二线性解法 还是这个矩阵假设我们要找18。 细细品味题目的含义我们可以这样来找 总结一下刚才的找法
先从右上角查起判断下面的数与要找的数字的大小关系如果大于向左查找。如果小于继续向下查找不断循环2,3过程直到不能再找
按照上述思路写成代码
#includestdio.h
int main()
{int arr[5][5] { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 };int i 0;int j 4;int n 0;scanf(%d, n);while (i 5 j 0){if (arr[i][j] n){break;}else if (arr[i 1][j] n){i;}else {j--;}}if (i 5 j 0)printf(有);elseprintf(无);return 0;
}结语
做这道题时掉进坑里好几次qwq~
请给自己些耐心一口吃不成胖子。 山外青山楼外楼莫把百尺当尽头。 想成为大佬那就保持空杯心态加油努力吧 都看到这里啦真棒(*^▽^*)
可以给作者一个免费的赞赞吗这将会鼓励我继续创作谢谢大家
编程小白写作如有纰漏或错误欢迎指正