首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

鞍点 程序 帮忙见见

2012-10-18 
鞍点 程序 帮忙看看#include stdio.hvoid main(){int i,j,max,min,row0,column0int a[5][5]{9,8,7,6

鞍点 程序 帮忙看看
#include <stdio.h>
void main()
{
int i,j,max,min,row=0,column=0;

int a[5][5]={9,8,7,6,5,
1,2,1,1,1,
1,3,1,1,1,
2,5,6,7,8,
4,7,8,9,10
};
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
max=a[i][0];
if(max<a[i][j]){
max=a[i][j]; // 找出行的最大值
column=j; //记下列
}
}
}
min=a[0][column]; //在j列找最小值 
for(i=0;i<5;i++){
if(min>a[i][column])
min=a[i][column];
row=i;
}
if(max==min) //两个条件都满足
printf("该矩阵鞍点为%d行%d列",row+1,column+1);
else
printf("该矩阵无鞍点.");
}
程序很简单 但是就是搞不对 搞了半天实在不知道错在哪里了 哎 只怪自己 水平太烂 求高手帮忙看看

[解决办法]
这里的鞍点是不是行最大值同时也是列的最小值。
一个矩阵中可能有多个这样的值。

你应该在一行中找到最大值之后,应该立刻判断它是否是它所在列的最小值。
如果是,那么就输出。
如果所有行都不满足,则无鞍点。

C/C++ code
#include <stdio.h>void main(){    int max,min,row=0,column=0;    int flag=0;    int a[5][5]={        9,8,7,6,5,        1,2,1,1,1,        1,3,1,1,1,        2,5,6,7,8,        4,7,8,9,10    };    for(int i=0;i<5;i++)    {        max=a[i][0];        for(int j=0;j<5;j++)        {            if(max<a[i][j]){                max=a[i][j]; // 找出行的最大值                column=j; //记下列            }            }            min=a[0][column]; //在j列找最小值          for(int j=0;j<5;j++){            if(min>a[j][column])            {                min=a[j][column];                row=j;            }        }        if(max==min) //两个条件都满足        {            flag = 1;            printf("该矩阵鞍点为%d行%d列\n",row+1,column+1);        }    }    if( flag==0 )        printf("该矩阵无鞍点.");}
[解决办法]
1 #include <stdio.h>

3 int
4 main ()
5 {
6 int i, j, k, max, min, row = 0, column = 0;

8 int a[5][5] =
9 {
 10 {9, 8, 7, 6, 5},
 11 {1, 2, 1, 1, 1},
 12 {1, 3, 1, 1, 1},
 13 {2, 5, 6, 7, 8},
 14 {4, 7, 8, 9, 10}
 15 };
 16 for (i = 0; i < 5; i++)
 17 {
 18 //printf("No.%d row!\n", i+1);
 19 max = a[i][0];
 20 for (j = 0; j < 5; j++)
 21 {
 22 if (max < a[i][j])
 23 {
 24 max = a[i][j]; // 找出行的最大值
 25 column = j; //记下列
 26 }
 27 }
 28 // printf("NO.%d row max value = %d\n", i+1, max);
 29 //printf("col = %d\n", column);
 30 min = a[0][column]; //在j列找最小值
 31 for (k = 0; k < 5; k++)
 32 {
 33 if (min > a[k][column])
 34 {
 35 min = a[k][column];
 36 row = k;
 37 }
 38 }
 39 //printf("NO.%d col min value = %d\n", i+1, min);
 40 if (max == min) //两个条件都满足
 41 {
 42 printf ("该矩阵鞍点为%d行%d列\n", row + 1, column + 1);
 43 }
 44 else
{
 45 printf ("该矩阵无鞍点.\n");
}
 46 }
 47 
 48 return 0;
 49 }

修改了一下你的程序,找到一个鞍点,是第二行第二列;参考一下吧,该加括号的要加上括号。

热点排行