题目:

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

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

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. 慕课网-前端JavaScrpt基础面试技巧-学习笔记

    章节目录: JS基础知识(上)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了基础知识的第一部分:变量的类型和计算.以及JS "三座大山" -- 原型.作 ...

  2. [OpenCV学习笔记2][Mat数据类型和操作]

    [Mat数据类型和基本操作] ®.运行环境:Linux(RedHat+OpenCV3.0) 1.Mat的作用: Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来保存实数或复数的向量.矩阵 ...

  3. reduceByKeyLocally

    2017年3月15日, 星期三 reduceByKeyLocally--Transformation类算子 代码示例  

  4. 从零开始学习前端开发 — 7、CSS宽高自适应

    一.宽度自适应 语法:width:100%; 注: a)块状元素的默认宽度为100% b) 当给元素设置宽度为100%时,继承父元素的宽度 c) 通常使用宽度自适应实现通栏效果 二.高度自适应 语法: ...

  5. PHP中put和post区别

    1. 使用支持和范围的区别: PHP提供了对PUT方法的支持,在Http定义的与服务器的交互方法中,PUT是把消息本体中的消息发送到一个URL,形式上跟POST类似; PHP 提供对诸如 Netsca ...

  6. 关于vueThink框架打包发布的一些问题

    刚开始发布自己的vueThink项目的时候,总是出现404错误,后来经过上网查找,发现是路径的问题,这方面的知识,网上很多,就不过多阐述了.我主要想说的是自己的项目发布的时候,admin账号登录的时候 ...

  7. 使用axios post 提交数据,后台获取不到提交的数据解决方案

    一.问题发现 前后端分离使用vue开发,结合axios进行前后端交互数据,一开始使用 get 请求,获取数据,没有发现任何问题,当使用 post请求 传参时,发现,数据明明已经提交,在打开F12 开发 ...

  8. js 原型规则与示例

    五大规则 1. 所有的引用类型( 数组 对象 函数 ) 都是 具有对象特性即自由拓展属性 (除了 "null")意外 2. 所有的引用类型(数组 对象 函数 ) 都有一个 prot ...

  9. 无废话XML--DOM4J

    Dom4j  是一个易用的.开源的库,用于 XML ,XPath  和 XSLT .它应用于 Java  平台,采用了 Java  集合框架并完全支持 DOM ,SAX 和 和 JAXP .我们可以很 ...

  10. Linux make nginx 的时候报错

    报错如下: `conf/koi-win' and `/usr/local/nginx/conf/koi-win' are the same file   原因: 可能在编译 nginx 的时候步骤不对 ...