C语言之鞍点的查找

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

接下来,我们直接上代码:

#include<stdio.h>
#define M 4
#define N 3
int main()
{
    int i,j,a[M][N],b,c,d,m;      //d判断是否有鞍点的变量,m为在该行的最大值,b,c记录序号。
    printf("请输入%d*%d个数",M,N);
    for(i=0;i<M;i++)
        for(j=0;j<N;j++)
            scanf("%d",&a[i][j]);
    printf("矩阵为\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
            printf("%-5d",a[i][j]);
        printf("\n");
    }

    for(i=0;i<M;i++)
    {
        m=a[i][0];
        b=i,c=0;
        for(j=0;j<N;j++)
            if(a[i][j]>m)
            {
                m=a[i][j];
                b=i,c=j;
            }
        d=1;
        for(j=0;j<M;j++)
        {
            if(m>a[j][c])
            {d=0;break;}    //如果有元素比m小,那么当前点肯定不是鞍点 ,跳出循环,开始下一行的判断 

        }
        if(d==1)
        {
            printf("鞍点为a[%d][%d]=%d",b,c,a[b][c]);
            //break;               //不用跳出,因为鞍点可能还有,不止一个
        }
    }
        //if(d!=1)printf("此矩阵无鞍点!");     //这句有问题了,比如第一行有鞍点d=1了,但
                                                //第三行没有鞍点, 此时d=0,用了这句岂不是整个矩阵没有鞍点?可以通过记录鞍点的个数来判断
}
时间: 2024-09-26 19:23:20

C语言之鞍点的查找的相关文章

代码-C语言二叉树的节点查找问题(递归方法)

问题描述 C语言二叉树的节点查找问题(递归方法) 用的递归的方法查找元素 有点类似于二叉树建立 代码如下 struct node *search(struct node *n,int v){//查找 struct node *p; p=n; if(p->value==v){//找到 return p; } else if(v<p->value){//左边部分查找 if(p->left==NULL) return NULL;//未找到 else{ p=p->left; sear

文本查找-C语言从txt文件查找字符串求助

问题描述 C语言从txt文件查找字符串求助 txt文件内容如下: A->B hello everybody haha hehe B->A world is big A->B impossible is nothing B->A just do it 需求: 首先查找字符串hello,找到后提取其上一行字符串A->B,然后依次查找下一个A->B或者B->A(两个都可以),提取出其下一行第一个字符串,也就是world ,impossible ,just 然后把hell

Go语言中字符串的查找方法小结_Golang

1.func Contains(s, substr string) bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true 复制代码 代码如下: import (  "fmt"  "strings" ) func main() {  fmt.Println(strings.Contains("widuu", "wi")) //true  fmt.Println(strings.Contains("wi

C语言根据MAC地址查找网卡并修改IP地址

#include <winsock2.h> #include <iphlpapi.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include "setupapi.h" #include <devguid.h> #pragma comment(lib, "IPHLPAPI.lib") #pragma comment(

一波C语言二元查找树算法题目解答实例汇总_C 语言

按层次遍历二元树问题描述:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印.  例如输入: 8 / / 6 10 / / / / 5 7 9 11 输出 8 6 10 5 7 9 11           定义二元树(其实是二元搜索树,但并不遍历算法)的结点为: struct BSTreeNode { int value; BSTreeNode *left; BSTreeNode *right; };       思路:利用队列的先进先出,很容易实现.每次取出队列的首

C语言中查找字符在字符串中出现的位置的方法_C 语言

C语言strchr()函数:查找某字符在字符串中首次出现的位置 头文件:#include <string.h> strchr() 用来查找某字符在字符串中首次出现的位置,其原型为: char * strchr (const char *str, int c); [参数]str 为要查找的字符串,c 为要查找的字符. strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回. 注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个

折半查找(binary search) 算法示例

折半查找, 又称二分查找(binary search), 需要数组有序(sort), 通过比较数组的中间数据(中心偏向较小的方法), 确定查找值的范围; 直到中值等于查找值, 则查找成功; 如果未成功, 则重置数据, 判断首尾位置的大小, 再进行中值比较; 判断失败, 则数据不存在; 注意: 1. Eclipse无法重定向(redirect)输入文件(file), 只能读入数据; 2. 使用cmd重定向输入文件, 则需要解压"stdlib.jar", 取出相应的class(In, Ou

c/c++中折半查找与插入排序的例子

插入排序 找到 比要插入的数大的数组元素,并且是在数组中最小的元素,插入 #include <stdio.h> void InsertionSort(int *a,int n); int main(void) {     int i;     int a[10]={2,4,6,8,0,1,5,9,7,3};     InsertionSort(a,10);     for(i=0;i<10;i++)         printf("%d\n",a[i]);     r

正则表达式教程之前后查找lookaround详解

本文实例讲述了正则表达式教程之前后查找lookaround.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明.所有java例子都在JDK1.6.0_13下测试通过. 一.问题引入 在HTML页面中,匹配出一对标签之间的文本,如匹配出页面的标签,即<title>与</title>之间的文本: 文本:<head><TITLE>wel