目录
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杰克尼,小编将为大家推送更多相关知识点的文章,欢迎关注!