您的位置:首页 > 编程语言 > C语言/C++

C语言,二维数组 找鞍点

2013-11-30 01:54 204 查看
还是以前写过的东西。。

鞍点是什么?百度出来的东西

鞍点(Saddle point)在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。

题目是这样的
找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印出有关信息。

#define ROW_COLUMN 5
void saddlePoint()
{
int array[ROW_COLUMN][ROW_COLUMN]={6,9,9,2,7 ,4,9,5,4,2, 9,9,8,7,9, 7,8,4,5,6, 2,9,4,5,6};
int maxRow[ROW_COLUMN]={0},minColumn[ROW_COLUMN]={50,50,50,50,50}; //马鞍点

for (int row=0; row<ROW_COLUMN; row++) {
for (int column=0; column<ROW_COLUMN; column++) {
// array[row][column]=arc4random()%10+1;
printf("%d ",array[row][column]);
}
printf("\n");
}
for (int i=0; i<ROW_COLUMN; i++) {
for (int j=0; j<ROW_COLUMN; j++) {
if (array[i][j]>maxRow[i]) {
maxRow[i]=array[i][j]; //塞选出每一行的最一大个,保存进最大行数组

}
}
}
for (int i=0; i<ROW_COLUMN; i++) {
for (int j=0; j<ROW_COLUMN; j++) {
if(array[j][i]<minColumn[j])
{
minColumn[i]=array[j][i]; //塞选每列的最小那个,保存进最小输裂数组
}
}
}
bool boolFlag=false;
for (int i=0; i<ROW_COLUMN; i++) {
if(maxRow[i]==minColumn[i])
{
boolFlag=true;
}
}
printf("%s",boolFlag?"鞍点存在":"鞍点不存在");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息