求解一道求鞍点的C语言算法以及源程序,求大神啊,尽量简便一点

 我来答
xoaxa
推荐于2016-01-16 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3402万
展开全部
#include <stdio.h>
#include <stdlib.h>

int findSaddle(int **p,int m,int n,int *x,int *y) {
int i,j,k,max,jmax,flag,f = 1;
for(i = 0; i < m; ++i) {
max = p[i][0];
jmax = 0;
for(j = 1; j < n; ++j) { // 找出i行最大的
if(max < p[i][j]) {
max = p[i][j];
jmax = j; // 且记录所在的列坐标
}
}
flag = 1; // 预置标志
for(k = 0; k < m && flag; ++k) { // 判断max是否为所在列最小的
if(p[k][jmax] < max) // 不是
flag = 0; // 则清标志
}
if(flag) {
*x = i;
*y = jmax;
return 1;
}
}
return 0;
}

int main() {
int **arr,x,y,i,j,m,n;
printf("行数 列数:");
while(scanf("%d%d",&m,&n) == 2) {
printf("输入 %d X %d 个整数\n",m,n);
arr = (int **)malloc(m * sizeof(int *));
for(i = 0; i < m; ++i) {
arr[i] = (int *)malloc(n * sizeof(int));
for(j = 0; j < n; ++j)
scanf("%d",&arr[i][j]);
}
if(findSaddle(arr,m,n,&x,&y))
printf("鞍点:a[%d][%d] = %d\n",x,y,arr[x][y]);
else printf("鞍点不存在!\n");
for(i = 0; i < m; ++i) free(arr[i]);
free(arr);
printf("行数 列数(q to quit):");
}
return 0; 
}
a1012144015
2015-05-08 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1313万
展开全部
/这是我学时参照的程序希望对你有帮助
#include<stdio.h>
#define m 3
#define n 3
int main() {
int a[m][n],i,j,max,min,flag=0,i1;
printf("请输入二维数组a[%d][%d]:\n",m,n);
for (i=0;i<m;i++)
for (j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("二维数组a[%d][%d]如下:\n",m,n);
for (i=0;i<m;i++) {
for (j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}

for (i=0;i<m;i++) {
i1=i;
for (max=a[i][0],j=0;j<n;j++) ####### max=a[i][j]改max=a[i][0]
if (max<a[i][j])
max=a[i][j];
for (j=0;j<n;j++) {
for (min=a[i][j],i=0;i<m;i++)
if (min>a[i][j])
min=a[i][j];
i=i1;
if (a[i][j]==max&&a[i][j]==min) {
printf("a[%d][%d]=%d ",i,j,a[i][j]);
flag++;
}
}

}
if (flag==0)
printf("没有鞍点!\n");
else printf("\n");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式