c语言马鞍点测试代码,求一个矩阵中的马鞍点(c语言实现)

数据结构中的求一个矩阵的马鞍点

请编写一个完整的程序,如果矩阵A中存在这样的一个元素A[i,j]满足条件A[i,j]是第i行的值最小的元素,且又是第j列中最大的元素,则称之为该矩阵的一个马鞍点。

代码如下:#include #define m 3 #define n 3 /*求矩阵A中的马鞍点*/ void Get_Saddle(int A[m][n]) { /* 基本思想:1.首先它是一个二维数组,需要遍历每一行,需要一个for循环,且需要放在最外层 2.然后,依次从每一行中横向遍历到最后(直到本行结束),找到最小值 1)又需要一层循环,循环结束至这一行中的最后位置, 2)找的最小值,记录最小值所在列数 3.找到最小值之后,用一个变量minCol记下当前列数 4.顺这当前列数竖向遍历(从当前列第一行开始向下)判断是否是最大的,如果是,则这个元素就是整个矩阵的马鞍点 1)又需要一个循环,用来遍历竖向遍历 */ int i,j,k; int flag,min,minCol; for(i=0;i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
using System;<br>using System.Collections.Generic;<br>using System.Text;<br><br>namespace 鞍点<br>{<br> <br> class Program<br> {<br> private static int m, n;<br> int[,] a;<br><br> public void getLine()<br> {<br> Console.WriteLine("输入你要测试的行:");<br> m = Convert.ToInt32(Console.ReadLine());<br> while (m <= 0)<br> {<br> Console.WriteLine("输入错误,请重新输入测试的行:");<br> Console.WriteLine("输入你要测试的行:");<br> m = Convert.ToInt32(Console.ReadLine());<br> }<br> Console.WriteLine("输入你要测试的列:");<br> n = Convert.ToInt32(Console.ReadLine());<br> while (n <= 0)<br> {<br> Console.WriteLine("输入错误,请重新输入测试的列:");<br> Console.WriteLine("输入你要测试的列:");<br> m = Convert.ToInt32(Console.ReadLine());<br> }<br> a = new int[m, n];<br> }<br><br> public void RunRandom(Random randObj)<br> {<br> for (int i = 0; i < m; i++)<br> {<br> for (int j = 0; j < n; j++)<br> {<br> a[i, j] = (randObj.Next())%100;<br> }<br> }<br> }<br><br> public void Random(int seed)<br> {<br> Random fixRand = new Random(seed);<br> RunRandom(fixRand);<br> }<br><br> public void getArray()<br> {<br> Console.WriteLine("输入的值为:");<br> for (int i = 0; i < m; i++)<br> {<br> for (int j = 0; j < n; j++)<br> {<br> Console.Write("a[{0},{1}] = ", i,j);<br> a[i,j] = Convert.ToInt32(Console.ReadLine());<br> }<br> Console.WriteLine();<br> }<br> }<br><br> public void displayArray()<br> {<br> Console.WriteLine("你输入的矩阵为:");<br> for (int i = 0; i < m; i++)<br> {<br> for (int j = 0; j < n; j++)<br> {<br> Console.Write(a[i,j]);<br> Console.Write("\t");<br> }<br> Console.WriteLine();<br> }<br> }<br><br> public void compare()<br> {<br> int flag = 0;<br> Console.WriteLine("鞍点为:");<br> for (int i = 0; i < m; i++)<br> {<br> int k ,min,max,t;<br> for (int j = 0; j < n; j++)<br> {<br> min = a[i,j];<br> for (k = 0; k < n; k++)<br> {<br> if (min > a[i, k])<br> {<br> break;<br> }<br> }<br> if (k == n)<br> {<br> max = a[i, j];<br> for (t = 0; t < m; t++)<br> {<br> if (max < a[t, j])<br> {<br> break;<br> }<br> }<br> if (t == m)<br> {<br> Console.WriteLine(a[i, j]);<br> Console.WriteLine("\t");<br> flag = 1;<br> }<br> }<br> }<br> }<br> if (flag == 0)<br> {<br> Console.WriteLine("此矩阵没有鞍点!");<br> }<br> }<br><br> public static void Main(string[] args)<br> {<br> Program p = new Program();<br> bool Flag = true;<br> while (Flag)<br> {<br> Console.WriteLine(" | 鞍点程序 |");<br> Console.WriteLine(" |=============================================|");<br> Console.WriteLine(" | 0--------退出 |");<br> Console.WriteLine(" | 1--------随机输入 |");<br> Console.WriteLine(" | 2--------手动输入 |");<br> Console.WriteLine(" |=============================================|");<br> Console.Write("你输入的是:");<br> int num = int.Parse(Console.ReadLine());<br> switch (num)<br> {<br> case 0:<br> Flag = false;<br> break;<br> case 1:<br> p.getLine();<br> p.Random(1);<br> p.displayArray();<br> p.compare();<br> break;<br> case 2:<br> p.getLine();<br> p.getArray();<br> p.displayArray();<br> p.compare();<br> break;<br> default:<br> Console.WriteLine("输入错误,请重新输入!");<br> break;<br> }<br> Console.ReadLine();<br> }<br> }<br> }<br>}<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值