题目:

编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在列上最小。有可能数组没有鞍点)。

要求
* 二维数组的大小、数组元素的值在运行时输入;
* 程序有友好的提示信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace _sy1_5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("计算矩阵鞍点(行最大,列最小)");
while (true)
{
Console.WriteLine("任意键继续,0退出");
string select = Console.ReadLine();
if (select == "0")
{
Console.WriteLine("已退出!");
break;
}
else
{
int[,] arr = new int[100, 100];//该数组
int m, n;
Console.Write("请输入二维数组的行数(小与100):");
m = int.Parse(Console.ReadLine());//矩阵行数
Console.Write("请输入二维数组的列数(小与100):");
n = int.Parse(Console.ReadLine());//矩阵列数
int i, j;
//输入该矩阵
Console.WriteLine("请输入" + m + "x" + n + "的矩阵");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
arr[i, j] = int.Parse(Console.ReadLine());
//Convert.ToInt32(Console.Read());
}
}
//输出打印该矩阵 for (i = 0; i < m; i++)
{
if (i == m / 2)
{
Console.Write("A = ");
}
for (j = 0; j < n; j++)
{
if (i == m / 2)
{
Console.Write(arr[i, j] + " ");
}
else
{
Console.Write(" " + arr[i, j]);
}
}
Console.WriteLine();
} int row_max;//先找到该行的最大值
int[] an_point = new int[100];//存储矩阵中所有鞍点
int count = 0;//鞍点个数
int temp1 = 0, temp2 = 0;//暂时保存该行最大值的位置
int[] x = new int[100];//保存鞍点的横坐标
int[] y = new int[100];//保存鞍点的纵坐标
bool flag = false;//判断是否是鞍点 for (i = 0; i < m; i++)
{
row_max = arr[i, 0];//令某行最大的等于该行第一个数
for (j = 0; j < n; j++)
{
if (row_max < arr[i, j])
{
row_max = arr[i, j];//找到该行最大值
//记录该数的位置
temp1 = i;
temp2 = j;
}
}
//找到最大值后判断该值在该列是否是最小值
for (int k = 0; k < m; k++)
{
if ((arr[k, temp2] < row_max) || (arr[k, temp2] == row_max && k != temp1))//不是最小值
{
flag = false;
break;
}
else//是最小值
{
flag = true;
}
}
//是鞍点
if (flag == true)
{
count++;//鞍点个数加一
an_point[count] = arr[temp1, temp2];//保存鞍点
//保存鞍点位置
x[count] = temp1 + 1;
y[count] = temp2 + 1;
}
}
if (count == 0)
{
Console.WriteLine("该矩阵无鞍点!");
}
else
{
Console.WriteLine("该矩阵有" + count + "个鞍点");
Console.WriteLine("分别是:");
for (int p = 1; p <= count; p++)
{
Console.Write("A[" + x[p] + "," + y[p] + "]=");
Console.WriteLine(an_point[p]);
}
}
}
}//结束
}
}
}

  结果显示:

实验总结:首先熟悉了对C#程序定义二维数组的方法,其次因先找出该行最大值并记录位置,在它的列上判断是否是列中最小值,由于要记录鞍点个数并输出,所以需要对每个鞍点都进行记录并保存位置。

C#写鞍点问题的更多相关文章

  1. PTA——找鞍点

    PTA 7-56 找鞍点 #include<stdio.h> #define N 6 int main() { ; scanf("%d",&n); int a[ ...

  2. C语言程序,找出一个二维数组的鞍点。

    什么是鞍点????? 鞍点就是在一个二维数组中,某一个数在该行中最大,然而其在该列中又是最小的数,这样的数称为鞍点. 昨天突然在书上看到这样的一道题,就自己尝试着写了一个找出一个二维数组中的鞍点. 好 ...

  3. WUSTOJ 1235: 计算矩阵的鞍点(Java)

    1235: 计算矩阵的鞍点 题目   输出二维数组中行上为最大,列上为最小的元素(称为鞍点)及其位置(行列下标).如果不存在任何鞍点,请输出"404 not found"(不带引号 ...

  4. 关于自己写C++的一点风格

    现在,我学了很长时间的C++,但是自己就是无法精通.许多知识是入门书上没有的.现在写C++最重要的就是风格问题. 我现在的C++风格: 把自己所有的东西都放在一个名称空间下. 没有全局的函数,有的函数 ...

  5. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  6. 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

  7. 用CIL写程序:你好,沃尔德

    前言: 项目紧赶慢赶总算在年前有了一些成绩,所以沉寂了几周之后,小匹夫也终于有时间写点东西了.以前匹夫写过一篇文章,对CIL做了一个简单地介绍,不过不知道各位看官看的是否过瘾,至少小匹夫觉得很不过瘾. ...

  8. 我为什么要写LeetCode的博客?

    # 增强学习成果 有一个研究成果,在学习中传授他人知识和讨论是最高效的做法,而看书则是最低效的做法(具体研究成果没找到地址).我写LeetCode博客主要目的是增强学习成果.当然,我也想出名,然而不知 ...

  9. sonn_game网站开发01:写在最前面

    之前做的个人博客项目,日向博客现在已经进入后期完善阶段了.是时候开始打造一个新坑了. 然而改造个什么坑呢?构思了好几天,想了好多方案,都觉得没啥动手欲望.因为,我想做的是那种,自己能用得上,而且有一定 ...

随机推荐

  1. 项目启动log4j相关警告问题

    在项目启动时出现了下面的警告: log4j:WARN custom level class [xxxxx] not found. 出现这个错误,不是log4j的问题,也是slf4j的问题,问题是因为自 ...

  2. java常量池詳解

    一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Class文件中的常量池在Clas ...

  3. java中数组中一些方法的总结

    这个方法可以控制复制原数组的长度,想要复制多少就可以复制多少 这种复制方法不是特别灵活.只能复制整个数组或者对数组从首部开始进行截取.无法灵活的想复制哪里就复制哪里.因此一般用在数组的扩容上. jdk ...

  4. CentOS系统下Redis安装和自启动配置的步骤

    相信大家都知道Redis是一个C实现的基于内存.可持久化的键值对数据库,在分布式服务中常作为缓存服务.所以这篇文章将详细介绍在CentOS系统下如何从零开始安装到配置启动服务.有需要的可以参考借鉴. ...

  5. 如何看apache的版本号

    在服务器上输入httpd -v就可以看到 在服务器上运行apachectl -v命令即可 Server version: Apache/2.2.3 Server built: Feb 25 2012 ...

  6. -------- Rootkit 核心技术——利用 nt!_MDL 突破 KiServiceTable 的只读访问限制 Part II --------

    ------------------------------------------------------------------------------------------- 本篇开始进入正题 ...

  7. linux tcp重传多会导致软中断在各个核很不均匀么?

    网络不稳定,会导致某些核的软中断很高么?那么,下面我们来分析下这个论断的准确性. 环境描述: 网卡软中断进行了绑核.设备具备80个核,960个网卡中断,没开启bbr,全部是tcp呼叫. # cat / ...

  8. python_如何判断字符串a以某个字符串开头或结尾?

    案例: 某文件系统目录下有一系列文件: 1.c 2.py 3.java 4.sh 5.cpp ...... 编写一个程序,给其中所有的.sh文件和.py文件加上可执行权限 如何解决这个问题? 1. 先 ...

  9. 用MapViewOfFile处理大文件-内存不足

    用MapViewOfFile处理大文件时,如果文件过大,如400M,则无法一次性映射入内存,否则会出现1132错误,即内存不足.原因可能为操作系统无法找到连续的内存.因此需要通过分页的方式,逐页将文件 ...

  10. ueditor显示内容末尾有多余标记的解决

    问题: 最近用了百度的ueditor文本编辑器,出现一个问题,用ueditor存数据到数据库都正常,但是重新读取后赋值到ueditor却会在末尾多出 "> 这两个符号.赋值方式如下: ...