当前位置: 代码迷 >> C语言 >> [求助]鞍点问题
  详细解决方案

[求助]鞍点问题

热度:244   发布时间:2006-12-22 22:13:23.0
[求助]鞍点问题
找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
搜索更多相关的解决方案: 鞍点  

----------------解决方案--------------------------------------------------------

==

[此贴子已经被作者于2006-12-22 23:58:47编辑过]


----------------解决方案--------------------------------------------------------

楼上的在写了。。


----------------解决方案--------------------------------------------------------

#include<sdio.h>
#define N 10
main()
{int a[N][N],n,m,i,j,max,maxj,flag1,flag2;
char ch;
printf("Enter:n");
scanf("%d",&n);
printf("Enter:m");
scanf("%d",&m);
printf("Please input an array:\n")
for(i=0;i<ni++)
for(j=0;j<m;j++)
{printf("a[%d][%d]:",i,j);
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++)
{max=a[i][0];
for(j=0;j<m;j++)
if(max<a[i][j]) {max=a[i][j];maxj=j;}
for(j=0,flag1=1;j<n&&flag;j++)
if(max>a[j]maxj] flag1=0;
if(flag1)
{printf("Row%d,%d %6d",i,maxj,max);
flag2=1;
}
}
printf("\n");
if(!flag2)
{printf("No saddle!\nPress any key to quit...");
ch=getchar();
exit(0);
}
}

看看这个


----------------解决方案--------------------------------------------------------

程序代码:

#include <stdio.h>
void main()
{
int a[3][3]={{5,2,3},{2,1,1},{4,0,2}},i,j,h,max,k,f,l=0;
for(i=0;i<3;i++)
{
max=a[i][0];f=0;k=0;
for(j=1;j<3;j++)
if(max<a[i][j])
{
max=a[i][j];
k=j;
}
for(j=0;j<3;j++)
if(max>a[j][k])
{
f=1;
break;
}
if(f==0)
{
printf(\"第%d行第%d列:%d \n\",i+1,k+1,max);
l++;
f=0;
}
}
if(l==0)
printf(\"没有\");


}


3*3的,组数你自己修改吧


----------------解决方案--------------------------------------------------------
偶的是VC环境的
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define N 20
int main()
{
int i,j,n,m,k,max,data[N][N];

printf("输入数组的行和列,均不可超过%d:",N,N);
scanf("%d%d",&n,&m);
printf("输入%d行%d列的数组:\n",n,m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&data[i][j]);
}
}

for(i=0;i<n;i++)
{
max=-32767;
for(j=0;j<m;j++)
{
if(data[i][j]>max)
{
max=data[i][j];
k=j;
}
}
for(j=0;j<n;j++)
{
if(max>data[j][k])
{
break;
}
}
if(j>=n)
{
printf("鞍点是(%d,%d)=%d\n",i+1,k+1,max);
}
}
return(0);
}

----------------解决方案--------------------------------------------------------
谢谢大家的帮忙啊
----------------解决方案--------------------------------------------------------
for(i=0;i<n;i++)
{
max=-32767;/ 可不可以解释下为什么这样?
for(j=0;j<m;j++)
{
if(data[i][j]>max)
{
max=data[i][j];
k=j;
}
}
for(j=0;j<n;j++)
{
if(max>data[j][k])
{
break;
}
}
if(j>=n)
{
printf("鞍点是(%d,%d)=%d\n",i+1,k+1,max);
}
}
return(0);/看不懂这里,解释下啊!
}

----------------解决方案--------------------------------------------------------
  相关解决方案