首页 > 其他分享 >用C语言找到所有的鞍点~

用C语言找到所有的鞍点~

时间:2024-12-08 14:12:44浏览次数:2  
标签:count 10 找到 max C语言 ++ int 鞍点

一起找到所有的鞍点

题目

输入n阶方阵,1<n<10,找出所有鞍点即对应下标,没有就输出None!
测试用例:
in:
3
1 2 3 4 5 6 7 8 9
out:
3 02

in:
3
6 5 6 7 6 7 8 6 7
out:
6 00
6 02

in:
3
4 5 7 3 8 5 6 9 4
out: None!

in:
2
1 1 1 1
out:
1 00
1 01
1 10
1 11

/*鞍点*/
							
#include<stdio.h>
int main (){
	int a[10][10], n, i, j, flag = 0,  anDian[10], count = 0, r, c, arrC[10], arrR[10];
	scanf("%d",&n);
	for(i = 0; i < n; i++){
	    for(j = 0; j < n; j++){
	        scanf("%d", &a[i][j]);
	    }
	}//输入方阵
	
	for(i = 0; i < n; i++){
		//外循环遍历每一行---以下是对每行最大值的小点检查是否列最小
		int max = a[i][0];
		//假设max是每行第一个数字
		for(j = 1; j < n; j++){
			//遍历每一行的各个列,看假设true?
			if(max < a[i][j]){
				max = a[i][j];
			}

		}//找到了max
		for(j = 0; j < n; j++){
			flag = 0;
			if(a[i][j] == max){
				r = i;
				c = j;
				//记录到每行等于最大值元素的下标
				
				//检验列,是不是最小的
				for(int m = 0; m < n; m++){
					if(max > a[m][c]){
						flag = 1;//这一列存在比max还要小的数字,这一列的其中一个max点没有鞍点
						break;
					}		
				}
				if(flag == 0){
					anDian[count] = max;//记录鞍点
					arrR[count]  = r;//记录横坐标
					arrC[count]  = c;//记录列坐标
					count ++;
				}
			}
		}	
	}
	if(count == 0){
		printf("None!");
	}else{
		for(int i=0;i<count;i++){
			printf("%d %d%d\n",anDian[i],arrR[i],arrC[i]);
		}
	}

	return 0;
}


换成矩阵更好理解一点嘻嘻嘻


#include<stdio.h>
int main (){
	int a[10][10], n, i, j, flag = 0,  anDian[10], count = 0, r, c, arrC[10], arrR[10], x;
	scanf("%d%d",&n,&x);
	for(i = 0; i < n; i++){
	    for(j = 0; j < x; j++){
	        scanf("%d", &a[i][j]);
	    }
	}//输入方阵
	
	for(i = 0; i < n; i++){
		//外循环遍历每一行---以下是对每行最大值的小点检查是否列最小
		int max = a[i][0];
		//假设max是每行第一个数字
		for(j = 1; j < n; j++){
			//遍历每一行的各个列,看假设true?
			if(max < a[i][j]){
				max = a[i][j];
			}

		}//找到了max
		for(j = 0; j < x; j++){
			flag = 0;
			if(a[i][j] == max){
				r = i;
				c = j;
				//记录到每行等于最大值元素的下标
				
				//检验列,是不是最小的
				for(int m = 0; m < x; m++){
					if(max > a[m][c]){
						flag = 1;//这一列存在比max还要小的数字,这一列的其中一个max点没有鞍点
						break;
					}		
				}
				if(flag == 0){
					anDian[count] = max;//记录鞍点
					arrR[count]  = r;//记录横坐标
					arrC[count]  = c;//记录列坐标
					count ++;
				}
			}
		}	
	}
	if(count == 0){
		printf("None!");
	}else{
		for(int i=0;i<count;i++){
			printf("%d %d%d\n",anDian[i],arrR[i],arrC[i]);
		}
	}

	return 0;
}

标签:count,10,找到,max,C语言,++,int,鞍点
From: https://www.cnblogs.com/GJ504b/p/18593355

相关文章

  • C语言的常用标准数据类型、转义字符、输出格式符、输入格式符、算术运算符、关系运算
    目录 C语言的常用标准数据类型C语言的常用转义字符C语言的输出格式符C语言的输入格式符C语言的算术运算符C语言的关系运算符C语言的逻辑运算符 C语言的常用标准数据类型C语言的常用转义字符‘\n’       换行符‘\t’       制表符‘\b’ ......
  • C语言 常用函数
     目录一.常用的数学函数(头文件:math.h):1.Abs()函数2.fAbs()函数3.exp()函数4.log()函数5.log10()函数6.pow()函数7.fmod()函数8.sqrt()函数9.sin()函数10.cos()函数11.tan()函数二常用字符函数(头文件:ctype.h)1.islower()函数      2.isupper()函数  ......
  • 从最浅层剖析C语言————第六节(深入了解数组传参、嵌套调用以及链式访问)
    目录 1.前情提要2.return语句3.数组作为函数参数4.嵌套调用和链式访问4.1函数的嵌套调用4.2链式访问 1.前情提要前面我们讲到了函数里面的形参和实参的概念,形参顾名思义就是一个形式上的参数,不参与实际的运算,而实参则刚好相反但是实参是需要传递给形参的,他......
  • 字符转换pta(C语言)
    本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。输入格式:输入在一行中给出一个不超过80个字符且以回车结束的字符串。输出格式:在一行中输出转换后的整数。题目保证输出不超过长整型范围。输入样例:free82jeep5输出样例:825代码:#include<st......
  • 字符串替换pta(C语言)
    本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:原字母对应字母AZBYCXDW……XCYBZA输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出替换完成后的字符串。输入样例:Onlythe11CAPItaLLeTtERSarerepla......
  • 【C语言--趣味游戏系列】--电脑关机整蛊小游戏
    前言:老铁们,还是那句话,学习很苦游戏来补,为了提高大家与朋友之间的友谊,博主在这里分享一个电脑关机的恶作剧小游戏,快拿去试试吧!!!目录:1.电脑关机代码2.详解1.电脑关机代码#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>......
  • c语言实现二叉树的创建、遍历(先序、中序、后序)
    二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树在计算机科学中具有广泛的应用,如表达式解析、数据存储与检索等。以下是有关二叉树的基本知识。1.二叉树的基本定义节点:二叉树的基本组成单元,包括节点值和指向其子节点的指针(左指......
  • C语言经典代码——part 23
    【程序84】题目:一个偶数总能表示为两个素数之和。1.程序分析:2.程序源代码:#include"stdio.h"#include"math.h"main(){inta,b,c,d;scanf("%d",&a);for(b=3;b<=a/2;b+=2){for(c=2;c<=sqrt(b);c++)if(b%c==0)break;if(c>sqrt(b))d=a-b;elsebr......
  • C语言编程实践:自制猜数字小游戏
    一、引言今天分享一个最近编写的猜数字游戏。游戏的要求:1、是电脑自动生成1-100的随机数。2、玩家猜数字,猜数字过程中提示猜大了或者猜小了,提示玩家猜出结果,并限制一定的次数,提高小游戏体验感。二、随机数的生成C语言提供了一个函数叫做rand,这函数是可以生成随机数的,函数......
  • C语言实现三子棋
    //创建test.c文件//三子棋#define_CRT_SECURE_NO_WARNINGS1#include"game.h"//头文件引用voidmenu(){ printf("******************\n"); printf("***1.play***\n"); printf("***0.exit***\n"); printf("*****......