本文主要是介绍【C语言初学者周冲刺计划】5.2一个二维数组中的鞍点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
1解题思路:
2代码:
3运行代码结果:
4总结:
1解题思路:
解题流程如下:
对每行进行遍历。先找到每行的最大值,然后再确定该最大值是否是所在列的最小值,若满足,则为鞍点,遍历停止;否则,继续,若遍历完所有行之后依旧未找到,则表示该二维矩阵无鞍点。
对这类问题可以进行拆解分析,先找出行最大,再去找列最小;除此之外会灵活运用二维数组;
2代码:
#include<stdio.h>
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<x;i++){for(j=0;j<y;j++){scanf("%d",&a[i][j]);}}printf("\n\n");for(i=0;i<x;i++){for(j=0;j<y;j++){printf("%d\t",a[i][j]);}printf("\n");}int max[x],min[y];for(i=0;i<x;i++) max[i]=a[i][0];for(j=0;j<y;j++) min[j]=a[0][j];for(i=0;i<x;i++){for(j=0;j<y;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<x;i++){for(j=0;j<y;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<stdio.h>
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<x;i++){for(j=0;j<y;j++){scanf("%d",&a[i][j]);}}printf("\n\n");for(i=0;i<x;i++){for(j=0;j<y;j++){printf("%d\t",a[i][j]);}printf("\n");}
这是先赋初值,然后循环进行比较大小
int max[x],min[y];for(i=0;i<x;i++) max[i]=a[i][0];for(j=0;j<y;j++) min[j]=a[0][j];for(i=0;i<x;i++){for(j=0;j<y;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<x;i++){for(j=0;j<y;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杰克尼,小编将为大家推送更多相关知识点的文章,欢迎关注!
这篇关于【C语言初学者周冲刺计划】5.2一个二维数组中的鞍点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!