目录
解题流程如下:
对每行进行遍历。先找到每行的最大值,然后再确定该最大值是否是所在列的最小值,若满足,则为鞍点,遍历停止;否则,继续,若遍历完所有行之后依旧未找到,则表示该二维矩阵无鞍点。
对这类问题可以进行拆解分析,先找出行最大,再去找列最小;除此之外会灵活运用二维数组;
- #include
- int main()
- {
- int a[100][100],i,j,x,y,k=0;
- printf("请输入第几行第几列的二维数组\n");
- scanf("%d%d",&x,&y);
- printf("\n请对%d行%d列的二维数组输入具体数值:\n",x,y);
- for(i=0;i
- {
- for(j=0;j
- {
- scanf("%d",&a[i][j]);
- }
- }
- printf("\n\n");
- for(i=0;i
- {
- for(j=0;j
- {
- printf("%d\t",a[i][j]);
- }
- printf("\n");
- }
- int max[x],min[y];
- for(i=0;i
0]; - for(j=0;j
0][j]; - for(i=0;i
- {
- for(j=0;j
- {
- if(max[i]<=a[i][j])
- max[i]=a[i][j];
- if(min[j]>=a[i][j])
- min[j]=a[i][j];
- }
- }
- for(i=0;i
- {
- for(j=0;j
- {
- if(max[i]==min[j])
- {
- printf("鞍点为:a[%d][%d]=%d",i+1,j+1,max[i]);
- k++;
- }
- }
- }
- if(k==0) printf("该二维数组不存在");
- return 0;
- }
以后我会加上行注释,这次先拆解讲解:
这是对二维数组进行规定行数和列数,然后对其每个位置进行赋值
- #include
- int main()
- {
- int a[100][100],i,j,x,y,k=0;
- printf("请输入第几行第几列的二维数组\n");
- scanf("%d%d",&x,&y);
- printf("\n请对%d行%d列的二维数组输入具体数值:\n",x,y);
- for(i=0;i
- {
- for(j=0;j
- {
- scanf("%d",&a[i][j]);
- }
- }
- printf("\n\n");
- for(i=0;i
- {
- for(j=0;j
- {
- printf("%d\t",a[i][j]);
- }
- printf("\n");
- }
这是先赋初值,然后循环进行比较大小
-
- int max[x],min[y];
- for(i=0;i
0]; - for(j=0;j
0][j]; - for(i=0;i
- {
- for(j=0;j
- {
- if(max[i]<=a[i][j])
- max[i]=a[i][j];
- if(min[j]>=a[i][j])
- min[j]=a[i][j];
- }
- }
-
-
最后部分是判断其是否含有鞍点
- for(i=0;i
- {
- for(j=0;j
- {
- if(max[i]==min[j])
- {
- printf("鞍点为:a[%d][%d]=%d",i+1,j+1,max[i]);
- k++;
- }
- }
- }
- if(k==0) printf("该二维数组不存在");
3运行代码结果:
4总结:
如果C语言有不懂细节,建议看看【C语言初学者周冲刺计划】5.1C语言知识点小总结-CSDN博客的内容
感谢各位的阅读,以上就是“C语言怎么一个二维数组中的鞍点”的内容了,经过本文的学习后,相信大家对C语言这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是CSDN杰克尼,小编将为大家推送更多相关知识点的文章,欢迎关注!
-
相关阅读:
Stable Diffusion生成图片的参数查看与抹除方法
【LeetCode】刷题模版/套路合集(持续更新)
Window 安装多个版本的 java 并按需切换
leetcode 468 验证IP地址是否有效(竟然花费了两个小时)
Kubernetes的整体架构
Git下载与安装
京东11.11真便宜闭眼买,联合众品牌共倡“真低价”
Rasa 3.x 学习系列-Rasa 3.2.0 新版本发布
如何解决Blender装配中常见问题,修复角色的绑定问题?
深入理解计算机系统——第七章 Linking
-
原文地址:https://blog.csdn.net/mrjieke6/article/details/134217802