题目:

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

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

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. UEP-级联查询

    级联查询在UEP中采用动态下拉的形式,cascadeid为关键字,注意jsp页面的id的相互嵌套关系,数据库字段的数值的设置,和动态下拉SQL语句的书写.本功能实现了省市区的三级联动查询

  2. setTimeout()方法,你真的懂吗?

    今天在群里看到了一道经典的javascript题型,之前也遇到过,可是再次遇到时,还是做错,还是不理解,因此这里来做个笔记吧! 不说了,直接上代码吧 for(var i=1; i<=9; i++ ...

  3. windows下github 出现Permission denied (publickey).解决方法

    今天在学习github的时候遇到了一些问题,然后爬了一会,找到了解决方法记录下来,以防忘记,当然能帮助别人最好啦! github教科书传送门:http://www.liaoxuefeng.com/wi ...

  4. PHP网站常见安全漏洞,及相应防范措施总结

    目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见 ...

  5. DT_修改注册项

    所用语法: /* */用于注释掉某些非必要的判断语句 修改的文件及路径如下: 前台: 文件路径:/根目录/lang/zh-cn/ 编辑文件:member.inc.php 修改其中一些提示信息(如,将[ ...

  6. 学习javascript数据结构(四)——树

    前言 总括: 本文讲解了数据结构中的[树]的概念,尽可能通俗易懂的解释树这种数据结构的概念,使用javascript实现了树,如有纰漏,欢迎批评指正. 原文博客地址:学习javascript数据结构( ...

  7. XGBoost、LightGBM的详细对比介绍

    sklearn集成方法 集成方法的目的是结合一些基于某些算法训练得到的基学习器来改进其泛化能力和鲁棒性(相对单个的基学习器而言)主流的两种做法分别是: bagging 基本思想 独立的训练一些基学习器 ...

  8. 《UNIX实用教程》读书笔记

    原著:<Just Enough UNIX>  Fifth Edition  [美]Paul K.Andersen 译著:<UNIX实用教程> 第5版 宋虹 曾庆冬 段桂华 杨路 ...

  9. MySQL 报错 _DATA_TYPE_INVALID_

    报错如下: Fatal error: Uncaught Exception: _DATA_TYPE_INVALID_ :[status=>0] in /usr/local/nginx/html/ ...

  10. Django环境安装--Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...