/如果A[i][j]是第i行中值最小的元素且又是j列中值最大的元素,则称之为一个马鞍点,要求实现一个mхn矩阵的所有马鞍点。/
#include <stdioh>
#define M 4
#define N 3
typedef struct node
{
int value;
int m;
int n;
}node;
void main()
{
int A[M][N] = {3,4,5,2,3,1,3,5,2,0,0,1};
int i = 0,j = 0, k = 0;
node tmpnode = {0};
int findflag = 1;
for(i = 0; i < M; i++)
{
tmpnodevalue = A[i][0];
tmpnodem = i;
tmpnoden = 0;
findflag = 1;
/找出i行最大值/
for(j = 0;j <N;j ++)
{
if(tmpnodevalue < A[i][j])
{
tmpnodevalue = A[i][j];
tmpnodem = i;
tmpnoden = j;
}
}
/判断是否是j列最小值/
for(k =0;k <M;k++)
{
if(tmpnodevalue > A[k][tmpnoden])
{
findflag = 0;//不是j列最小值
break;
}
}
/找到了则输出结果/
if(findflag)
{
printf("\n i = %d, j =%d, A[%d][%d] = %d\n",tmpnodem,tmpnoden,tmpnodem,tmpnoden,tmpnodevalue);
}
}
}
你这程序有很多问题,比如说你那查找的for循环就有问题;因为我以前没编过,所以我用C++重新帮你编了,你要用void chazhao(int a[][1000],int h,int l)这样才是对的,我用的是动态数组,你看看吧,不懂的HI我。
#include "iostream"
using namespace std;
void chazhao(int a,int h,int l)//查找;
{
int c=0;
int min;
int flag=0;//标志位,1为找到了,0为没找到;
min=a[0][0];
for(int i=0;i<h;i++)
{
for(int j=0;j<l;j++)
{
if(a[i][j]<min)
{
min=a[i][j];
c=j;
}
//找出第i行的最小值; c列;
}
for(j=0;j<h;j++)
{
if(a[j][c]>min) //比较第i行第c列是不是第c列中最大值;
{
flag=0;
break;
}
else flag=1;
}
if(flag==1)//在第i行找到了
{
cout<<"第"<<i<<"马鞍点为a["<<i<<"]["<<c<<"]="<<a[i][c]<<endl;
}
else
{
cout<<"第"<<i<<"行的马鞍点不存在!"<<endl;
}
}
}
void Display(int a,int h,int l)//显示你输入的数组;
{
for(int i=0;i<h;i++)
{
for(int j=0;j<l;j++)
{cout<<a[i][j]<<'\t';}
cout<<endl;
}
}
void main()
{
int h,l;
int p;//用动态数组储存,节省空间;
cout<<"请输入你查找马鞍点的数组的行和列:\n";
cin>>h>>l;
p = new int [h];
for(int i=0;i <= h-1;i++)
{
p[i]=new int[l];
}
cout<<"请输入你要查找马鞍点的数组:\n";
for(i=0;i<h;i++)
{
for(int j=0;j<l;j++)
{
cin>>p[i][j];
}
cout<<endl;
}
Display(p,h,l);
chazhao(p,h,l);
delete []p;//释放空间;
}
#include#defineN10#defineM10voidmain(){inti,j,k,m,n,flag1,flag2,a[N][M],max,maxj;printf("输入行数n:");scanf("%d",&n);printf("\n输入列数m:");scanf("%d",&m);for(i=0;imax){max=a[i][j];maxj=j;}for(k=0,flag1=1;ka[k][maxj])flag1=0;if(flag1){printf("\n第%d行第%d列的%d是鞍点\n",i,maxj,max);flag2=1;}}if(!flag2)printf("\n矩阵无鞍点!\n");}
可以修改M和N来修改矩阵的维数
#include<stdioh>
#define M 3
#define N 3
main()
{
int i,j,obj,p,q,flag=1,flag2=0;
float a[M][N];
printf("请输入矩阵元素!\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%f",&a[i][j]);
printf("矩阵元素如下:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%f ",a[i][j]);
printf("\n");
}
for(i=0;i<M;i++)
{
obj=a[i][0];
p=0;
for(j=1;j<N;j++)
if(obj<a[i][j])
{
obj=a[i][j];
p=j;
}
for(j=0;j<N;j++)
if(obj>a[j][p])
{
flag=0;
break;
}
flag2+=flag;
if(flag==1)
printf("有鞍点:a[%d][%d]=%f\n",i,p,a[i][p]);
}
if(flag2==0)
printf("没有鞍点!\n");
}
public class P1{
private int[][] a=null;
private int rownum=0,colnum=0;
//存储每行中最小的那个数的行和列,如"1,2"---第一行,第二列
private int[] rows=null;
//存储每列中最大的那个数的行和列,如"1,2"---第一行,第二列
private int[] cols=null;
private int num=0;
P1(int[][] a,int row,int col){
thisa = a;
thisrownum=row;
thiscolnum=col;
rows = new int[row];
cols = new int[col];
}
public void setMinRow(){
int min;
int minIndex;
for(int r=0;r<rownum;r++){
min = a[r][0];
minIndex=0;
for(int c=0;c<colnum;c++){
if(a[r][c]<min){
min = a[r][c];
minIndex=c;
}
}
rows[r]=minIndex;
}
}
public void setMaxCol(){
int max;
int maxIndex;
for(int c=0;c<colnum;c++){
max = a[0][c];
maxIndex=0;
for(int r=0;r<rownum;r++){
if(a[r][c]>max){
max = a[r][c];
maxIndex=r;
}
}
cols[c]=maxIndex;
}
}
public void getSaddleNUm(){
setMinRow();
setMaxCol();
for(int r=0;r<rownum;r++){
if(r==cols[rows[r]]){
num++;
Systemoutprintln("第"+num+"个马鞍点是行"+r+"列"+rows[r]+":"+a[r][rows[r]]);
}
}
}
public void print(){
for(int r=0;r<rownum;r++){
for(int c=0;c<colnum;c++){
Systemoutprint(a[r][c]+" ");
}
Systemoutprintln("");
Systemoutprintln("-----------");
}
}
public static void main(String[] args){
//存放矩阵的数值
int[][] a1 = {{1,5,9,10,2},{7,5,6,3,2},{11,7,9,0,12},{6,9,13,10,21},{11,4,13,40,32},{21,16,91,100,42}};
//第一个参数为存放矩阵的数组,第二个参数为矩阵行数,第三个为矩阵列数
P1 p = new P1(a1,6,5);
pgetSaddleNUm();
pprint();
Systemoutprintln("矩阵拥有的马鞍点数为:"+pnum);
}
}
以上就是关于C语言课程设计 求马鞍点全部的内容,包括:C语言课程设计 求马鞍点、二维数组寻找马鞍点问题,希望各位大大们赐教,在此先鞠躬了,谢谢! 以下是我编的程序和错误提示!、设计一个Java程序,查找二维数组中的马鞍点(本行中最小、但本列中最大的点。假设二维数组中没有重复数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)